2012-04-20 3 views

답변

11

작은 jQuery 플러그인을 만들었습니다. 원리는 간단합니다 :

컨테이너에는 같은 내용의 인라인 요소 2 개를 삽입하지만 하나는 매우 작게 스타일이 다른 하나는 .이고 다른 하나는 매우 큰 A입니다. vertical-align:baseline 기본적으로 있기 때문에 가 그런 다음, 기준은 다음과 같이 주어진다 :

:

$ = @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)) 

으로 연기 후 : 여기

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

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

는 커피 스크립트에서 플러그인 ( JS here)입니다
$('body').baseline() 
// or whatever selector: 
$('#foo').baseline() 

-

t : http://bl.ocks.org/3157389

+0

이는 위대하다! 고마워요! – EPLKleijntjens

+0

더 완벽한 대안은 http://pomax.nihongoresources.com/pages/Font.js/입니다. 아직 시도하지 않았지만 위대한 것처럼 보입니다. – abernier

+1

안녕하세요. 나는 당신의 코드를 시험해 보았고, 그것을 실행할 때 나의 웹 사이트의 기본 폰트 인 것으로 생각되는 기준선의 수는 1.1108247422680413이었다. 번호가 의미하는 바를 말해 줄 수 있어요? 나는 기준선을 눈으로 다듬었고 나는 당신의 방법에서 얻은 숫자가 어떻게 그것과 관련되는지를 볼 수 없다. 미리 감사드립니다. –

4

앨런 스턴 의해 발견 (http://blogs.adobe.com/webplatform/2014/08/13/one-weird-trick-to-baseline-align-text/) 요소가 다른 인라인 요소의 초기 정렬을 변경하는 인라인 블록, I 함께 https://stackoverflow.com/a/11615439/67190보다 정확하고, 파생 실제로 더 간단 I 발견 데모 넣어 이어 JavaScript의 값 : http://codepen.io/georgecrawford/pen/gbaJWJ. 희망이 유용합니다.

<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

아아, 귀하의 솔루션이 firefox 37 – jedierikb

+0

에서 작동하지 않는 것 같습니다. https://github.com/georgecrawford/font-baseline –

+0

안녕하세요 @ 조지 크로포드. 코드와 데모를 보내 주셔서 감사합니다. 메소드가 리턴하는 다양한 값이 무엇인지 설명하는 문서/도면이 있습니까? 폰트와 라인 높이는 명백합니다. 데모를 공부할 때 기준선은 크기가 작고 내용은 글꼴의 총 크기 즉, 디 센더 + 캡 높이 + 오름차순이라고 생각하지만 잘못된 것일 수 있습니다. 멋진 테이블이나 그림이 도움이 될 것입니다. –

관련 문제