2009-10-16 36 views

Trả lời

0

Vâng, bạn không thể làm điều đó với HTML thuần tuý. Giống như nó đã được đề cập, sử dụng CSS. Nhưng bạn sẽ muốn một số vị trí tốt!

+0

Tôi làm cách nào? – netimen

3

Có nhiều cách bạn có thể làm điều này với CSS và mỗi cách đều có ưu và nhược điểm của chúng. Một cách sẽ là sử dụng vị trí tương đối. Một ví dụ nhanh chóng có thể làm việc như thế này:

<span class="fraction"> 
    <span class="numerator">3</span> 
    <span class="denominator">4</span> 
</span> 

Và CSS để đi cùng với điều này:

span.fraction { } 

/* Or child selector (>) if you don't care about IE6 */ 
span.fraction span.numerator { 
    position:relative; 
    top:-0.5em; 
} 

span.fraction span.denominator { 
    position:relative; 
    top:0.5em; 
    left:-0.5em; /* This will vary with font... */ 
} 

ví dụ cụ thể này sẽ làm việc tốt hơn nếu bạn sử dụng một phông chữ đơn cách.

+1

Nhưng ở đây bù đắp ở bên trái phụ thuộc vào kích thước của siêu chữ và chỉ số. Nhưng nếu người đề cử là 31234 và mẫu số là 56547? Có một quyết định thống nhất nào hoạt động không phụ thuộc vào kích thước của siêu chữ và chỉ số? – netimen

+0

@netimen Đây là một điểm tốt và tôi đã nghĩ về nó sau khi tôi lấy ví dụ trên. Tóm lại: không, không có giá trị ma thuật. Đây là một dịp mà mô-đun Ruby3 của Ruby có thể có ích. –

+0

@netimen Có thể tính toán độ chính xác bằng cách sử dụng JavaScript và sau đó áp dụng nó cho từng trường hợp siêu/chỉ số. Điều gì mà bạn đang cố gắng đại diện? Phân số? Các hợp chất hóa học? –

4

Đây là giải pháp sạch. Tạo hai lớp CSS:

.nobr { 
    white-space: nowrap; 
} 
.supsub { 
    display: inline-block; 
    margin: -9em 0; 
    vertical-align: -0.55em; 
    line-height: 1.35em; 
    font-size: 70%; 
    text-align: left; 
} 

Bạn đã có thể có lớp "nobr" như một <nobr> thay thế. Bây giờ để bày tỏ công thức phân tử cho sulfate, sử dụng lớp "supsub" như sau:

<span class="nobr">SO<span class="supsub">2-<br />4</span></span> 

Đó là, kèm theo superscript bạn/subscript trong lớp "supsub", và đặt một < br/> giữa chúng. Nếu bạn thích các chữ viết tay/chỉ số của bạn lớn hơn hoặc nhỏ hơn một chút, thì hãy điều chỉnh kích thước phông chữ và sau đó là tinker với chiều thẳng đứng và chiều cao dòng. Các -9em trong thiết lập lề là để giữ cho các superscripts/subscripts từ thêm vào chiều cao của dòng có chứa chúng; bất kỳ giá trị lớn nào cũng sẽ làm.

2

Sử dụng kiểu bảng CSS (ngoại trừ IE8 trở xuống). HTML:

<span class="over-under"> 
    <span class="over">sup</span> 
    <span class="under">sub</span> 
</span> 

CSS:

span.over-under { 
    position: relative; 
    top: 1em; 
    display: inline-block; 
} 
span.over-under > .over { 
    display: table-row; 
} 
span.over-under > .under { 
    display: table-row; 
} 

Fiddle: https://jsfiddle.net/FredLoney/Loxxv769/4/

Bên cạnh việc đơn giản hơn chỉnh vị trí tương đối, giải pháp này tránh biến dạng bố trí phát sinh từ những lựa chọn thay thế. Xem, ví dụ: https://jsfiddle.net/FredLoney/da89nyk2/1/.

Các vấn đề liên quan