CSS aligned

高洛峰
Release: 2017-02-22 13:42:21
Original
1098 people have browsed it

Previous words

 Alignment at both ends is very commonly used in the production of navigation Nav. This article will introduce in detail the three implementation methods of CSS alignment at both ends

flex

Flexible box model flex is a powerful elastic layout method that can hold most layouts Effects, of course, include alignment. You can use the two-end alignment attribute of the main axis alignmentjustify-contentspace-between

justify-content: space-between;
Copy after login

 If you want to consider the compatibility of the three versions of flex, use the following code

 [Note] IE9-browser does not support

.justify-content_flex-justify{
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    -webkit-justify-content: space-between;
    justify-content: space-between;
}


<style>
body{margin: 0;}    
ul{margin: 0;padding: 0;list-style: none;}
.list{width: 200px;overflow: hidden;border: 1px solid gray;background-color: lightgreen;line-height: 30px;}
.in{background-color: lightblue;padding: 0 10px;}
.display_flex{display: -webkit-box;display: -ms-flexbox;display: -webkit-flex;display: flex;}
.display_flex > *{display: block;}
.justify-content_flex-justify{-webkit-box-pack: justify;-ms-flex-pack: justify;-webkit-justify-content: space-between;justify-content: space-between;}
</style>
<ul class="list display_flex justify-content_flex-justify">
    <li class="in">内容</li>
    <li class="in">样式</li>
    <li class="in">行为</li>
</ul>
Copy after login

text-align

 Horizontal alignmenttext-align itself has an attribute value that is aligned on both ends justify. However, it should be noted that when using it to achieve alignment at both ends, you need to pay attention to adding whitespace characters (including spaces, newlines, and tabs) between elements for it to work. Since there are line breaks between <li> elements in the HTML structure, there is no need to add additional whitespace characters

 But just in this way, the elements cannot achieve the effect of aligning both ends

 Elements must occupy a full line, as shown below. Elements that fill up a row can be aligned at both ends, but elements that do not fill up cannot be aligned

【text-align-last】

 Obviously, none of the above situations meet the requirements. At this time, You need to use the attribute text-align-last, which is used to specify how to align the last line of text.

So replace the text-align attribute with text -align-last. However, to be compatible with IE browser, you need to set text-align:justify

at the same time. [Note] Safari browser, IOS, androis4.4-browser does not support

<style>
body{margin: 0;}    
ul{margin: 0;padding: 0;list-style: none;}
.list{width: 200px;overflow: hidden;border: 1px solid gray;background-color: lightgreen;line-height: 30px;text-align: justify;text-align-last: justify;}
.in{background-color: lightblue;padding: 0 10px;display:inline-block;}
</style>
<ul class="list ">
    <li class="in">内容</li>
    <li class="in">样式</li>
    <li class="in">行为</li>  
</ul>
Copy after login

[after pseudo-element]

Using text-align-last can achieve the effect of aligning both ends, but the compatibility is not good. By setting the pseudo element :after to the parent element, and setting inline-block to the pseudo element, and setting the width to 100%, it is equivalent to the pseudo element :after being Squeeze to the second row. As a result, the original element occupies the first line, triggering the effect of aligning both ends

 It should be noted here that because the blank space will be parsed as a newline, you can set the height of the parent element height, and overflow and hide to solve the problem of redundant line breaks

<style>
body{margin: 0;}    
ul{margin: 0;padding: 0;list-style: none;}
.list{width: 200px;height: 30px;overflow: hidden;border: 1px solid gray;background-color: lightgreen;line-height: 30px;text-align: justify;}
.in{background-color: lightblue;padding: 0 10px;display:inline-block;}
.list:after{content:"";width:100%;display:inline-block;}
</style>
<ul class="list ">
    <li class="in">内容</li>
    <li class="in">样式</li>
    <li class="in">行为</li>  
</ul>
Copy after login

column

Use multi-column layoutcolumn to achieve similar effects. column-count defines the number of columns of the element. In the example, there are 3 sub-elements, so it is defined as 3 columns. Special attention should be paid to the fact that the child elements need to be set as block elements at this time for it to take effect.

 [Note] IE9-browser does not support

<style>
body{margin: 0;}    
ul{margin: 0;padding: 0;list-style: none;}
.list{width: 200px;overflow: hidden;border: 1px solid gray;background-color: lightgreen;line-height: 30px;text-align: center;}
.col3{-webkit-column-count:3;-moz-column-count:3;column-count:3;}
.in{background-color: lightblue;padding: 0 10px;display:block;}
</style>
<ul class="list col3">
    <li class="in">内容</li>
    <li class="in">样式</li>
    <li class="in">行为</li>  
</ul>
Copy after login

 If vertical bars need to be used between child elements , and when the height of the vertical line is the same as the height of the sub-element, use column-rule to conveniently implement the requirements

<style>
body{margin: 0;}    
ul{margin: 0;padding: 0;list-style: none;}
.list{width: 200px;overflow: hidden;border: 1px solid gray;background-color: lightgreen;line-height: 30px;text-align: center;}
.col3{-webkit-column-count:3;-moz-column-count:3;column-count:3;}
.col-rule{-webkit-column-rule: 1px solid black;-moz-column-rule: 1px solid black;column-rule: 1px solid black;}
.in{background-color: lightblue;padding: 0 10px;display:block;}
</style>
<ul class="list col3 col-rule">
    <li class="in">内容</li>
    <li class="in">样式</li>
    <li class="in">行为</li>  
</ul>
Copy after login

For more CSS Alignment related articles, please pay attention to the PHP Chinese website!

Related labels:
source:php.cn
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template