Home Web Front-end CSS Tutorial Comparison of css float attribute and position:absolute

Comparison of css float attribute and position:absolute

Aug 11, 2017 pm 02:54 PM
float position

I believe many people have this question. Which one is better, float or position:absolute, in page layout? Since it is a layout, it is better to use float. I use this more often. This float can be cleared and generally will not affect the overall layout. Position, positioning, is not constrained. It seems that this is not a layout. Generally, you can consider using it when doing special positioning or floating layers. For normal page layout, I personally recommend using the FLOAT

1.float attribute to define the direction in which the element floats. Historically this property has always been applied to images, causing the text to wrap around the image, but in CSS, any element can be floated. A floated element creates a block-level box, regardless of what type of element it is. p is a typical block-level element that occupies a line by itself.

Let’s first look at how the most basic block-level elements are arranged. html code, the following styles are based on this.

Copy code The code is as follows:


<p class="boxBg">
  <p class="box1">
        Box 1
                                                                                                                                                 < ;
                                                                                                                                                                                            </p>
</p>


css code:


Copy code

The code is as follows :

.boxBg{ margin: 0 auto; width:500px;

height:200px;

border:2px solid #ccc
}
.box1{
  width:100px;
  height:50px;
  background-color:red
  }
  .box2{
  width:100px;
  height:50px;
background-color:blue
}
.box3{
width:100px;
height:50px;
background-color:green
}


Execution results:


Since p is a block-level element, the boxes will be arranged vertically. In actual operation, it is often necessary to arrange the frames horizontally. There are two ways to do this. The first is display:inlin-block;

Comparison of css float attribute and position:absoluteCopy code

The code is as follows:

.boxBg{ margin: 0 auto; width:500px;

height:200px;

border:2px solid #ccc
}
.box1{
width:100px;
height:50px;
background-color :red;
display:inline-block
}
.box2{
width:100px;
height:50px;
background-color:blue;
display:inline -block
}
.box3{
width:100px;
height:50px;
background-color:green;
display:inline-block
}


Execution result:


As for the gap in the middle, the essential reason is traced back to the white space between elements, so set fone- on the parent element size, you can adjust the size of the blank gap.

Comparison of css float attribute and position:absoluteCopy code

The code is as follows:

.boxBg{ margin: 0 auto; width:500px;

height:200px ;

border:2px solid #ccc;
font-size:34px;
}


After changing font-size:34px, the gap will become wider.

Execution result:

Similarly, to remove the gap, you need to copy font-size:0;

Comparison of css float attribute and position:absolute Code

The code is as follows:


.boxBg{
margin: 0 auto;
width:500px;
height:200px;
border:2px solid #ccc;
font-size:0
}

Execution result:

Comparison of css float attribute and position:absolute

The desired layout is achieved, and the text inside the box disappears, as well. Prove that the size of the text affects the gap. Just reset it in the child element. Of course that's not the focus today. The same effect float:left; can also be easily achieved.

Copy code The code is as follows:


<style>
.boxBg{
  margin: 0 auto;
  width:500px ;
height:200px;
border:2px solid #ccc;
}
.box1{
width:100px;
height:50px;
background-color:red ;
float:left
}
.box2{
width:100px;
height:50px;
background-color:blue;
float:left
}
.box3{
width:100px;
height:50px;
background-color:green;
float:left
}
</style>

Execution result:

Comparison of css float attribute and position:absolute

After adding float to the element, the floating element will hit the parent element border or another floating element border, immediately adjacent to it. displayed later. For example, in the following example, when the total width of the floating element is greater than the parent element, the line is wrapped. When the line is wrapped, the previous float is encountered and displayed after it

Copy code The code is as follows:


<style>
.boxBg{
margin: 0 auto;
width:500px;
height:200px;
border:2px solid #ccc;
}
.box1{
width:100px;
height:100px;
background-color:red;
float:left
}
.box2{
width:100px;
height:50px;
background-color:blue;
float:left
}
.box3{
width:400px;
height:50px ;
background-color:green;
float:left
}
</style>

Execution result:

Comparison of css float attribute and position:absolute

What will be the result if inline-block is used?

Copy code The code is as follows:


<style>
.boxBg{
  margin: 0 auto;
  width:500px ;
height:200px;
border:2px solid #ccc;
}
.box1{
width:100px;
height:100px;
background-color:red ;
     display:inline-block
       
    .box2{
         width:100px;
          Height:50px; 
      background-color:blue;
        display:inline-block
}
.box3{
width:400px;
height:50px;
background-color:green;
display:inline-block
}
< /style>

Execution result:

Comparison of css float attribute and position:absolute

At this time, box 3 starts on a new line instead of following box 1, (1,2 The gap between them will not be discussed here) This is also a judgment of using inline-block and float. If the module width is different, using float typesetting may lead to different results from the expected results, so use float when the width and height remain unchanged. It is excellent, but if it is inconsistent, you need to look at the specific layout and use the appropriate attributes.

The code is posted below, only the modified part is posted, the rest remains unchanged, and the structure remains unchanged.

What will be the result if the float:left of box3 is removed? According to understanding, floating elements do not occupy space, that is, frame 3 will ignore frame 1, and frame 2 will be displayed directly next to the border of the parent element, that is, frame 1 will cover frame 3? What is the result?

Copy code The code is as follows:


.box3{
width:100px;
height:50px;
background-color: green;
}

Execution results:

Comparison of css float attribute and position:absolute

Why does the text in box 3 appear below instead of being covered by box 1? Then look at the code, look at the picture

Copy code The code is as follows:


.box3{
height:50px;
background-color:green ;
}

Execution result:

Comparison of css float attribute and position:absolute

Do you see the difference? Yes. box3 does not define width; the width is removed. Without defining the width, the default width is the width of the parent element, which means that at this time, width: 500px; the floating element covers the non-floating element, that is, the width of 200px in front of box 3 is occupied by the floating element. Covered, why is the text not covered and the text is squeezed 200px behind the floating element?

Floating elements will not occupy the space of the block, so box three is 100% of the parent container width 500px, but floating elements will occupy other space, which is the line box space. In layman's terms, it is occupied by the text. space.

This is also the reason why the text will automatically wrap around the image after it floats. Floated elements do not occupy block-level space, but will affect text and inline elements within block-level elements.

In this case, if you want the three boxes to have the same width, then you only need to change the width of the third box: 300px;

Copy the code The code is as follows:


.box3{
width:300px;
height:50px;
background-color:green;
}

Execution result:

Comparison of css float attribute and position:absolute

Now that we have finished talking about the basic floating, let’s talk about the problems. Although floating is easy to use, it will also cause many problems in practice. For example:

<style>
.boxBg{
margin: 0 auto;
position:relative;
width:500px;
border:2px solid #ccc;
background-color:#ccd;
}
.box1{
float:left;
width:100px;
height:50px;
background-color:red;
}
.box2{
float:left;
width:100px;
height:50px;
background-color:blue;
}
.box3{
float:left;
width:100px;
height:50px;
background-color:green;
}
</style>

Execution result :

Comparison of css float attribute and position:absolute

Very common problem, under normal circumstances. The gray background should be as high as the frame, but the reality is always not satisfactory :)

The reason for this situation is known to be caused by floating. Yes, it is floating in many places. It is said that floating elements will break away from the ordinary flow, so ordinary elements can be treated as floating elements that do not exist, so the background will not be opened here. But students who read carefully will remember that it was mentioned above that floating elements will not affect the block frame. But it will affect the line box, that is, text or inline elements. Whether it is a block-level element or an inline element, it belongs to the ordinary flow. If the floating element breaks away from the ordinary flow, why will it affect the line box? In fact, I don’t think there is any need to dwell on these conceptual things. According to my understanding, floating elements are not in the same horizontal space as block-level elements, but in the same space as text inline elements, so the border here is equivalent to being on top of the background, so it will not affect the background elements. What is usually called clearing floats, It does not mean to remove the float attribute of the floating element, but to clear the floating elements around it so that there are no floating elements around it. Therefore, if you want box 3 to move to the second row, you cannot use clear:right; in box 2. You need to use clear:left;

Copy code The code is as follows:


.box3{
float:left;
width:100px;
height:50px;
background-color:green;
clear:left
}

Execution result:

Comparison of css float attribute and position:absolute

ok! After understanding this, let’s talk about how to make the background and frame the same height. The first method: the most direct The way is to directly set the background height to be equal to the frame and it will be OK. Of course, this is not the point. Let’s talk about clearing the float. First look at the example:

Copy code The code is as follows:


<!DOCtype>
<html>
<head> ;
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
; <style>
.boxBg{
margin: 0 auto;
position:relative;
width:500px;
border:2px solid #ccc;
background-color:#ccd;
}
.box1{
float:left;
width:100px;
height:50px;
background-color:red;
}
.box2{
float:left;
width:100px ;
height:50px;
background-color:blue;
}
.box3{
float:left;
width:100px;
height:50px;
background-color:green;
}
.clear{
width:100px;
height:50px;
}
</style>
</head> ;
<body>
; <p class="boxBg">
; <p class="box1">
<p class="box2">
Frame 2
##           <p class="clear"></p>
                                                                                                 Execution result:




#The above result achieves the result. It is obvious that an empty element with the same height is directly added. Because this element is not floating, it is the same as the background, so The background is stretched. In fact, the principle of using clear float is the same as this, and we also try to open up the background; above, remove the width and height of clear, and add the clear attribute


Copy code
The code is as follows:

.clear{

clear:left;Comparison of css float attribute and position:absolute }

Execution result:

This You may still not be able to see clearly, try adding a few words to the clear box and see

Execution result:

Because clear uses clear:left. In summary, clear There cannot be a floating element on the left, so it must be displayed on a new line. In this way, you can see that the result in the picture is actually a background held up by one element. Of course, there are other ways to achieve it. The main thing here is to explain floating clearly:)

The above is the detailed content of Comparison of css float attribute and position:absolute. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What is the maximum value of float? What is the maximum value of float? Oct 11, 2023 pm 05:54 PM

What is the maximum value of float?

Flexible application skills of position attribute in H5 Flexible application skills of position attribute in H5 Dec 27, 2023 pm 01:05 PM

Flexible application skills of position attribute in H5

How to put div at the bottom in html How to put div at the bottom in html Mar 02, 2021 pm 05:44 PM

How to put div at the bottom in html

CSS layout property optimization tips: position sticky and flexbox CSS layout property optimization tips: position sticky and flexbox Oct 20, 2023 pm 03:15 PM

CSS layout property optimization tips: position sticky and flexbox

What are the database float lengths? What are the database float lengths? Oct 10, 2023 pm 03:57 PM

What are the database float lengths?

What attributes does position have? What attributes does position have? Oct 10, 2023 am 11:18 AM

What attributes does position have?

What is the accuracy of float? What is the accuracy of float? Oct 17, 2023 pm 03:13 PM

What is the accuracy of float?

How to use position in h5 How to use position in h5 Dec 26, 2023 pm 01:39 PM

How to use position in h5

See all articles