Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
474 views
in Technique[技术] by (71.8m points)

兄弟级box1块级元素开启float,块级元素box2没有开启浮动,但是box2作为块级元素却没有独占一行,为什么?

问题详细描述请看代码:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
        <style>
            div {
                width: 200px;
                height: 200px;
            }
            /* box1设置float:left */
            .box1 {
                background-color: blue;
                float: left;

                /* box1开启透明效果,方便查看box2未开启任何定位效果时,元素的布局效果 */
                /* opacity: 0; */
            }

            /* box2不浮动 ,设置相对定位*/
            .box2 {
                /* 不开启定位时,box2边框样式隐藏在box1的下面,可以设置box1  opacity:0查看 ,box2的文本div2没有上升到上面的布局中去*/

                /* 
                    设置相对定位时,box2边框样式覆盖box1的元素布局 ,
                    div2文本并没有上升到上面的布局中去,
                    同时box3  float:right到box2文本行div2的右侧

                        ——问题:
                            为什么在box1开启float后,box2的元素边框样式上升到box1的位置,
                            文本div2没有上升,按照我对float的理解,box2作为一个块级元素,没有开启float,
                            他的布局样式应该独占一行,为什么边框样式上升了,但是文本却保留下来,
                            而且box3即使浮动了,也应该时浮动到box2下面一行的右侧,
                            而不该浮动到box2拉下的文本div2的右侧,因为box2,并没有开启浮动。
                            
                            针对上面的问题,其中涉及了什么样的元素布局原理?
                                问题简述:
                                    ——为什么box2作为块级元素,在没有开启浮动的情况下,
                                    没有独占一行,并且边框样式和文本行相互分离?

                */
                /* position: relative; */

                /* 开启绝对定位时,box2布局整体覆盖了box1的元素布局 */
                /* position: absolute; */
                background-color: pink;
            }

            /* box3开启float:right */
            .box3 {
                background-color: red;
                float: right;
            }
        </style>
    </head>
    <body>
        <div class="box1">div1</div>
        <div class="box2">div2</div>
        <div class="box3">div3</div>
    </body>
</html>

——问题:

为什么在box1开启float后,box2的元素边框样式上升到box1的位置,文本div2没有上升,按照我对float的理解,box2作为一个块级元素,没有开启float,他的布局样式应该独占一行,为什么边框样式上升了,但是文本却保留下来,而且box3即使浮动了,也应该时浮动到box2下面一行的右侧,而不该浮动到box2拉下的文本div2的右侧,因为box2,并没有开启浮动。针对上面的问题,其中涉及了什么样的元素布局原理?

——问题简述:

为什么box2作为块级元素,在没有开启浮动的情况下,没有独占一行,并且边框样式和文本行相互分离?

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
浮动元素浮动后的位置有其他元素,会将其他元素的内容挤开。所以div的文本被挤出去了.

具体看这篇博客 https://www.cnblogs.com/stray...。写得很好的


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...