前端 - 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. $fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题2. python - 求一个在def中可以实现调用本def满足特定条件continue效果的方法(标题说不太清楚,请见题内描述)3. mysql - SQL操作时间的函数?4. javascript - 用表单提交两个时间段请求后台返回对应数据时出现的一些问题!5. java - mybatis怎么实现在数据库中有就修改,没有就添加6. MYSQL新建用户设置可以远程访问的问题7. angular.js - angularjs的自定义过滤器如何给文字加颜色?8. node.js - nodejs和前端JavaScript 字符串处理结果不一样是什么原因?9. docker-compose中volumes的问题10. docker api 开发的端口怎么获取?
![$fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题](http://www.haobala.com/attached/image/news/202205/093622cb60.png)