为了账号安全,请及时绑定邮箱和手机立即绑定

组合使用的时候,父级元素相对定位设置具体定位方向的时候,为什么会让定位元素无法正常设置定位方向?

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>无标题文档</title>

<style>

div{

border:solid 2px red;

        width:400px;

        height:200px;

    

position:relative;

top:20px;

        left:10px;/*当这里设置right的时候,下面注释的地方就不可以再设置right,只可以设置LEFT,反之,只可以设置right,为什么???*/



}

div.div1{

position:absolute;

         width:30%;

         height:30%;

border-color:blue;

top:10px;left:10px;

}

div#div2{

position:absolute;

        right:10px;   /*为什么这里 可以设置左,当设置右的时候就没有效果,比如此时单单改动RIGHT的值的情况下,试试看?*/

        top:20px;

        height:30%;

        width:35%;

        border-color:green;

}

</style>

</head>


<body>

<p>hahahhahahaha</p>

<div>

<div class="div1"></div>

<div id="div2"></div>

</div>



</body>

</html>

说的不是很清楚,左右的是这样,从而引申出上下方向的问题。

这到底是为什么???

正在回答

5 回答

我找到答案了,布局是从左到右,从上到下解析的,css是属性是层叠继承的,#div2中虽然能改right,但是div下面有left,width已经定位了基本形状,所以在改right就不起作用了。div2如果改成right:30px;,它继承了div样式的left:50;但是又定宽,会优先走left,right被忽略

div2如果改成right:30px;并且width:auto,那么他就会左50,右30,自动布局。

所以也就解释了为什么上面设置right  下面不管左右都有效。而上面left的时候下面右就无效


1 回复 有任何疑惑可以回复我~

我在慕课网的代码区试了 确实是可以的,div设置为right  #div2的right改变的时候绿框确实可以相对父级div移动的

0 回复 有任何疑惑可以回复我~
#1

霸气的擎宇 提问者

复制我的代码到你编辑器里面然后浏览器查看,你更改#div2样式里面的 right值看看 到底有没有变化!!!没有!
2016-07-15 回复 有任何疑惑可以回复我~
#2

大块吃肉188 回复 霸气的擎宇 提问者

当你第一次注释的时候设置right的时候第二次注释部分不管是right还是了left都是有效果的。但是当第一次注释那设置left的时候,第二次注释那里再设置right是不行的。我在subline上试的
2016-07-15 回复 有任何疑惑可以回复我~
#3

霸气的擎宇 提问者 回复 大块吃肉188

是呀 这是为什么呢?正确的布局我是会的,就是想知道不单独给顶级DIV设置样式的时候,出现子元素不能和父元素同时使用相同方向的布局的原因或者原理是什么。
2016-07-15 回复 有任何疑惑可以回复我~
#4

霸气的擎宇 提问者 回复 大块吃肉188

我找到答案了,布局是从左到右,从上到下解析的,css是属性是层叠继承的,#div2中虽然能改right,但是div下面有left,width已经定位了基本形状,所以在改right就不起作用了。div2如果改成right:30px;,它继承了div样式的left:50;但是又定宽,会优先走left,right被忽略 div2如果改成right:30px;并且width:auto,那么他就会左50,右30,自动布局。 所以也就解释了为什么上面设置right 下面不管左右都有效。而上面left的时候下面右就无效
2016-07-15 回复 有任何疑惑可以回复我~
#5

大块吃肉188 回复 霸气的擎宇 提问者

div{}样式设置的有问题,这个是面向三个div标签的,对于div来说他已经先设置left然后在div#div2中又设置了right,你看同时让他即在左边又在右边,他当然有问题了。你给顶级设置class的时候在顶级的样式设置里的left不会对子级div2造成影响了。
2016-07-15 回复 有任何疑惑可以回复我~
#6

霸气的擎宇 提问者 回复 大块吃肉188

先设置LEFT 又设置right,并不是不可以!只因为她是定宽。比如我先设置right,再设置left 就不会有问题。浏览器解析的规则是从左到右从上到下。并且一般不同时存在左右设置,宽AUTO的时候,才怎么设置都可以。
2016-07-16 回复 有任何疑惑可以回复我~
查看3条回复

我是可以的,不知道你为什么不行。换个浏览器试试?

0 回复 有任何疑惑可以回复我~
#1

霸气的擎宇 提问者

复制我的代码到你编辑器里面然后浏览器查看,你更改#div2样式里面的 right值看看 到底有没有变化!!!没有!
2016-07-15 回复 有任何疑惑可以回复我~

我可以啊

0 回复 有任何疑惑可以回复我~
#1

霸气的擎宇 提问者

复制我的代码到你编辑器里面然后浏览器查看,你更改#div2样式里面的 right值看看 到底有没有变化!!!没有!
2016-07-15 回复 有任何疑惑可以回复我~

你要看一下的div 是什么 顶级的div   你把顶级的div  给他一个id 或者class 命名就行了, 以后不能犯那么低级错误

0 回复 有任何疑惑可以回复我~
#1

霸气的擎宇 提问者

一个顶级DIV里面两个小DIV 虽然我给了顶级DIV样式,就算把小DIV也覆盖了,当时根据权重也好,就近原则也好。不应该是不影响的吗?
2016-06-25 回复 有任何疑惑可以回复我~
#2

霸气的擎宇 提问者

试了一下不可以,反而就剩下一个框。你复制到记事本里吗试试就这的了
2016-06-25 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

组合使用的时候,父级元素相对定位设置具体定位方向的时候,为什么会让定位元素无法正常设置定位方向?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信