要實現下圖這個效果:css
左上角label的邊框寬度爲0.5px,字體大小爲15px;下面的文字和label間距爲16px。全部元素寬度固定,高度自適應。html
html代碼css3
<div class="parent"> <div id="wrapper"> <div id="label"> Lorem ipsum </div> </div> <div class="content"> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Numquam accusamus ipsa voluptatem rem labore in alias officia, iste molestiae, illum ratione explicabo delectus laborum iusto. Tempore aspernatur, nesciunt excepturi eum. </div> </div>
CSS代碼app
.parent{ width:300px; background: goldenrod; } #wrapper{ position: relative; } #label{ width: 100px; border: 1px solid black; font-size: 30px; transform: scale(.5); transform-origin: 0 0; position: absolute; top: 0; left: 0; } .content{ margin-top: 16px; }
js代碼字體
var label = document.getElementById('label'); var wrapper = document.getElementById('wrapper'); var labelHeight = window.getComputedStyle(label).height; wrapper.style.height = parseInt(labelHeight)/2 + 'px';
## 心路歷程
首先,0.5px的邊框寬度和15px的字體大小,通常狀況下,是不支持的。這時就使用了css3的縮放。且以父元素左上角爲縮放原點。spa
#label{ width: 100px; border: 1px solid black; font-size: 30px; transform: scale(.5); transform-origin: 0 0; } .content{ margin-top: 16px; }
效果是這樣的code
能夠看到雖然label進行了縮放,但還佔據了原來的大小的空間。orm
因此就顯示了增長藍色框的wrapper的意義,使label脫離文檔流和文本流,同時佔位。(float並不能脫離文本流)
進一步的代碼是這樣的:htm
#wrapper{ border: 1px solid blue; position: relative; } #label{ width: 100px; border: 1px solid black; font-size: 30px; transform: scale(.5); transform-origin: 0 0; position: absolute; top: 0; left: 0; } .content{ border: 1px solid red; margin-top: 16px; }
效果:圖片
哦喲~藍色框wrapper塌了,怎麼佔位呢?
label高度是不定的,怎麼設置wrapper的高度呢?
只好用js了:
var label = document.getElementById('label'); var wrapper = document.getElementById('wrapper'); var labelHeight = window.getComputedStyle(label).height; wrapper.style.height = parseInt(labelHeight)/2 + 'px';
效果:
我胡漢三又回來了~
請大神指點有沒有更好的方法~