CSS2具有::before
和::after
僞元素,它使樣式表能夠以先前需要向頁面添加額外的非語義元素的方式來改變文檔,如「style-hooks」 。CSS :: inner僞元素的可能性
我感到驚訝的是CSS3沒加這將消除的HTML「divitis」更多的情況下任何::inner
或::outer
僞元素 - 當頁面包含許多<div class="wrapper">
元素,純粹作爲風格鉤零語義值。 CSS3的多重背景圖像和每盒梯度的支持幫助,
一個最近的情況涉及該標記:
<div>
<img src="foo.jpg" />
<h3>Heading</h3>
<p>Lorem ipsum</p>
<p>Dolor sit amet</p>
</div>
<!-- followed by the same markup template (with a different img src and paragraph text) repeated several times -->
可視化頁面設計呼籲<img />
元素被定位或浮動到側(內。填補了文檔寬度,以及文本和標題應該有一個粗邊框周圍,而不是圖像<div>
的約束
理想的情況下,用一個假設的::inner
元素,這可以解決像這樣:
div {
display: block;
background: white;
position: relative;
}
div::nth-of-type(odd) { background: #FEFEFE; }
div > img {
display: block;
position: absolute;
top: 0;
left: 0;
}
div::nth-of-type(odd) > img {
left: auto;
right: 0;
}
div::inner {
border: 5px solid #CECECE;
max-width: 20em;
}
然而,我不得不解決上添加一個包裝元件:
<div>
<img src="foo.jpg" />
<div>
<h3>Heading</h3>
<p>Lorem ipsum</p>
<p>Dolor sit amet</p>
</div>
</div>
(與div::inner
選擇替換div > div
)。
我相信這可能是與Polyfill.js來完成運行querySelectorAll
爲目標的元素和包裝分別的內容,或元素本身,以及應用性能對那些新的元素來處理「::inner
」和「::outer
」選擇。我想知道是否有人已經完成了這項工作,或者是否有瀏覽器已經作爲專有擴展支持此功能 - 例如IE如何使用::before(n)
語法支持多個::before
和::after
僞元素。
':: inner'如何知道它應該包裝哪些元素? ..我的意思是在'div div'的情況下,這是顯而易見的 – LGSon
我在這裏做了初稿,[fiddle demo](https://jsfiddle.net/LGSon/mhz8twgo/),雖然絕對定位的圖像給了我一些問題(因爲他們把圖像從流中拿出來),所以我現在去掉了定位。該草稿使用固定的圖像高度,並且僞相同。 – LGSon
由於絕對定位的形象會導致問題,因此具有這些問題的目的是什麼? – LGSon