2012-04-20 8 views

Antwort

11

Ich habe ein kleines jQuery-Plugin dafür gemacht. Das Prinzip ist einfach:

In einem Container, 2 Inline-Elemente mit dem gleichen Inhalt, aber einer gestylt sehr klein . und die andere sehr große A einfügen. Dann wird, da es vertical-align:baseline standardmäßig sind, wird die Basislinie wie folgt angegeben:

 ^+----+^
     | | +-+| | top 
height | |.|A|| v 
     | | +-+| 
     v +----+ 

======================= 
baseline = top/height 
======================= 

Hier ist das Plugin in Coffeescript (JS here):

$ = @jQuery ? require 'jQuery' 

detectBaseline = (el = 'body') -> 
    $container = $('<div style="visibility:hidden;"/>') 
    $smallA = $('<span style="font-size:0;">A</span>') 
    $bigA  = $('<span style="font-size:999px;">A</span>') 

    $container 
    .append($smallA).append($bigA) 
    .appendTo(el); 
    setTimeout (-> $container.remove()), 10 

    $smallA.position().top/$bigA.height() 

$.fn.baseline = -> 
    detectBaseline(@get(0)) 

dann rauchen sie mit:

$('body').baseline() 
// or whatever selector: 
$('#foo').baseline() 

-

Probieren Sie es aus a t: http://bl.ocks.org/3157389

+0

Das ist großartig! Vielen Dank! – EPLKleijntjens

+0

Eine vollständigere Alternative könnte http://pomax.nihongoresources.com/pages/Font.js/ sein - habe es noch nicht ausprobiert, scheint aber großartig. – abernier

+1

Hallo @abernier. Ich habe Ihren Code ausprobiert, und wenn ich ihn ausführe, bekomme ich die Nummer 1.1108247422680413 für die Grundlinie, auf der ich vermute, dass sie die Standardschrift für meine Website ist. Kannst du mir sagen, was diese Zahl bedeutet? Ich habe die Basislinie mit dem Auge ausgearbeitet, und ich kann nicht sehen, wie sich die Zahl, die ich von Ihrer Methode erhalte, darauf bezieht. Danke im Voraus. –

4

Nach der Entdeckung von Alan Stearns (http://blogs.adobe.com/webplatform/2014/08/13/one-weird-trick-to-baseline-align-text/), die Inline-Block-Elementen der Basislinie Ausrichtung von anderen Inline-Elementen zu ändern, I zusammen eine Demo, die ich genauer als https://stackoverflow.com/a/11615439/67190 gefunden, und tatsächlich einfachere a herzuleiten Wert in JavaScript: http://codepen.io/georgecrawford/pen/gbaJWJ. Ich hoffe, es ist nützlich.

<div> 
    <span class="letter">T</span> 
    <span class="strut"></span> 
<div> 
div { 
    width: 100px; 
    height: 100px; 
    border: thin black solid; 
} 
.letter { 
    font-size: 100px; 
    line-height: 0px; 
    background-color: #9BBCE3; 
} 
.strut { 
    display: inline-block; 
    height: 100px; 
} 
+0

leider, Ihre Lösung scheint nicht auf Firefox zu funktionieren 37 – jedierikb

+0

Dies kann nützlich sein: https://github.com/georgecrawford/font-baseline –

+0

Hallo @ George Crawford. Danke für deinen Code und deine Demos. Gibt es ein Dokument/eine Zeichnung, die erklärt, wie sich die verschiedenen Werte, auf die sich Ihre Methode bezieht, beziehen? Die Schriftart und die Zeilenhöhe sind offensichtlich. Beim Studieren deiner Demos denke ich *, dass die Grundlinie die Größe der Unterlänge ist und der Inhalt die Gesamtgröße der Schriftart ist, d. H. Unterlänge + Kappenhöhe + Oberlänge, aber ich könnte falsch liegen. Ein schöner Tisch oder ein Bild wäre hilfreich. –

Verwandte Themen