$ 기호 앞에 가격에 맞춤 스타일을 추가하고 싶습니다. 쉬운 방법 :
<style>.dropcap { doStuff; }</style>
<p><span class="dropcap">$</span>19.95</p>
쉬운 방법은 의미 론적이지 않고 접근하기 쉽지 않다는 점입니다. 대부분의 브라우저에서 잘 작동
<style>p::first-letter { doStuff; }</style>
<p>$19.95</p>
하지만, 파이어 폭스는 "구두점"로 $ 기호를 해석하고 CSS 규칙을 무시 : 내가 따라하고 싶은 간단한 표준 기반의 접근 방식과 같이 ::first-letter {}
을 사용하는 것입니다. 다른 최신 브라우저는이 문제를 잘 처리합니다.
jQuery/JavaScript polyfill 또는 CSS 해킹이 표준 기반 방식으로 수행 할 수 있으며 여전히 Firefox에서 작동합니까?
업데이트 : 트릭을 수행하는 것처럼 보이는 polyfill을 발견했습니다 : jquery-fancyletter. Modernizr 기능 감지 기능을 찾고 있지만 찾을 수 없기를 바랬습니다. 내 자신과 지긋 지긋한 것을 쓰려고 시도하는 것은 항상 false를 반환합니다 (기능이 지원되는 Chrome에서도). 아무도 내 기능을 감지 할 때 잘못된 점을 알려주는 친절한 사람이 될 수 있습니까?
Modernizr.addTest('dollarFirstLetter', function() {
return Modernizr.testStyles('#modernizr p:first-letter {margin-right:20px;display:block}', function(elem) {
window.ptag = document.createElement("p");
ptag.innerHTML = "$39.95";
elem.appendChild(ptag);
return window.getComputedStyle(ptag, ":first-letter").marginRight === "20px";
});
});
나는 왜 그것이'false'를 반환하는지 알기 위해 modernizr에 대해 충분히 알지 못합니다. 그러나 문제를 해결하더라도 Firefox는 "$"이전의 공간에 해당 스타일을 적용하기 때문에 테스트로 작동 할 수 없습니다. 그래서': first-letter'의 스타일을 검사하는 대신': first-letter'와 AFAIK의 텍스트 내용을 검사해야합니다. – Oriol