前端 - css負邊距的問題?
問題描述
這里有兩個p, 都向左浮動,其中sub 設置了margin-left:-100%; 請問為何會出現這樣的效果,sub能夠占據到main上面。
在線demo:http://codepen.io/anon/pen/zvJeNG
請問這個負邊距有何妙用,為何-100% 和 -190px(p的寬度)效果截然不同呢?
<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8' /> <title>Document</title></head><body> <p class='main'> this is main</p> <p class='sub'> this is sub </p> </body></html>
.main{ float:left; width:100%; background-color:aqua;}.sub{ float:left; width: 190px; margin-left:-100%; background-color:black; }
問題解答
回答1:margin值是百分比數的時候,是相當于元素的包含塊的width來計算的
你這兒的.sub margin-left:-100%的100% 是相對于sub的包含塊 body的width 來計算也就是body的寬度
而-190px就只是190個像素
回答2:1、這兩個p都設置了左浮動,當body的寬度足夠他們倆平排在一起的時候,他們一定會排在同一行。2、sub設置了-100%,這個100%是相對于它的父元素body的寬度,也就是說它等于body的寬度,所以,它就回到了最左邊,而sub的寬度為190px,那就是從最左邊開始排列,就是現在這個樣式。
相關文章:
1. html - vue項目中用到了elementUI問題2. 對mysql某個字段監控的功能3. javascript - windows下如何使用babel,遇到了困惑4. javascript - js中向下取整5. JavaScript事件6. showpassword里的this 是什么意思?代表哪個元素7. android - rxjava多線程并發怎么控制順序8. java - Spring MVC怎么實現提交表單后跳轉?9. python - 為什么正常輸出中文沒有亂碼,zip函數之后出現中文編程unicode編碼的問題,我是遍歷輸出的啊。10. javascript - table列過多,有什么插件可以提供列排序和選擇顯示列的功能
