18-way CSS skills
Recently, some friends have asked me some CSS problems in my work. They are always unable to control CSS and affect the efficiency of CSS. I will analyze and summarize the error to help you make it easier to use CSS.
This article summarizes all my skills and compatibility solutions since I started using the CSS layout method. I would like to share this with you, I will focus on some mistakes that beginners may make (including those I have made myself). If you are already a CSS guru, you may already know these skills. If you have more skills, I hope I can help.
I. Use CSS abbreviations
Using abbreviations can help reduce the size of your CSS file and make it easier to read. For the main rules of CSS abbreviations, see common CSS abbreviations syntax summary, which is not described here.
Ii. Define the unit unless the value is 0
Unit that forgets to define the size is a common mistake for beginners of CSS. In HTML, you can write only width = "100", but in CSS, you must give an accurate unit, for example, width: 100px width: 100em. There are only two exceptions. The unit is not defined: the Row Height and the 0 value. Other values must follow the unit. Note that do not add spaces between values and units.
Iii. Case Sensitive
When CSS is used in XHTML, the element names defined in CSS are case sensitive. To avoid this error, we recommend that all definition names be in lower case.
The values of class and ID are also case-sensitive in HTML and XHTML. If you must write them in combination with uppercase and lowercase, make sure that your CSS definition is consistent with the tags in XHTML.
4. Cancel the element limitation before class and ID
When you write an element to define a class or ID, you can omit the previous element limitation, because ID is unique in a page, and clas s can be used multiple times on the page. It makes no sense to limit an element. For example:
Div # Content {/* declarations */}
Fieldset. Details {/* declarations */}
Can be written
# Content {/* declarations */}
. Details {/* declarations */}
This saves some bytes.
5. Default Value
Generally, the default value of padding is 0, and the default value of background-color is transparent. However, the default values may be different in different browsers. If there is a conflict, You can first define that the margin and padding values of all elements are 0 at the beginning of the style sheet, as shown in the following code:
*{
Margin: 0;
Padding: 0;
}
6. Do not need to repeatedly define the value that can be inherited
In CSS, the child element automatically inherits the attribute values of the parent element, such as color and font. defined in the parent element, the child element can be inherited directly without repeated definitions. However, the browser may use some default values to overwrite your definition.
VII. Recent priority principle
If there are multiple definitions of the same element, the closest (minimum level) is the highest priority. For example, there is such a piece of code.
Update: lorem ipsum dolor set
In the CSS file, you have defined the element P and a class "Update"
P {
Margin: 1em 0;
Font-size: 1em;
Color: #333;
}
. Update {
Font-weight: bold;
Color: #600;
}
In these two definitions, class = "Update" will be used because the class is closer to P. For more information, see W3C calculating a selector's specificity.
8. multi-class definition
A tag can define multiple classes at the same time. For example, we first define two styles. The first style background is #666, and the second style has a border of 10 PX.
. One {width: 200px; Background: #666 ;}
. Two {border: 10px solid # f00 ;}
In the Page code, we can call
<Div class = "One Two"> </div>
In this way, the final display effect is that the DIV has both a background of #666 and a border of 10 PX. Yes. You can try it.
9. Use the sub-selector (descendant selectors)
CSS beginners do not know that using sub-selectors is one of the reasons that affect their efficiency. The sub-selector can help you save a lot of class definitions. Let's look at the following code:
<Div id = "subnav">
<Ul>
<Li class = "subnavitem"> <a href = "#" class = "subnavitem"> Item 1 </a> </LI>
<Li class = "subnavitemselected"> <a href = "#" class = "subnavitemselected"> Item 1 </a> </LI>
<Li class = "subnavitem"> <a href = "#" class = "subnavitem"> Item 1 </a> </LI>
</Ul>
</Div>
The CSS definition of this Code is:
Div # subnav ul {/* some styling */}
Div # subnav ul Li. subnavitem {/* some styling */}
Div # subnav ul Li. subnavitem A. subnavitem {/* some styling */}
Div # subnav ul Li. subnavitemselected {/* some styling */}
Div # subnav ul Li. subnavitemselected A. subnavitemselected {/* some styling */}
You can use the following method to replace the above Code
<Ul id = "subnav">
<Li> <a href = "#"> Item 1 </a> </LI>
<Li class = "Sel"> <a href = "#"> Item 1 </a> </LI>
<Li> <a href = "#"> Item 1 </a> </LI>
</Ul>
The style definition is:
# Subnav {/* some styling */}
# Subnav Li {/* some styling */}
# Subnav A {/* some styling */}
# Subnav. Sel {/* some styling */}
# Subnav. Sel A {/* some styling */}
Using a sub-selector can make your code and CSS more concise and easier to read.
10. Do not quote the background image path
To reduce the number of bytes, we recommend that you do not quote the path of the background image because the quotation marks are not required. For example:
Background: URL ("images/***. GIF") #333;
Can be written
Background: URL (images/***. GIF) #333;
If you add quotation marks, some browser errors may occur.
11. Group selectors)
When some element types, classes, and IDs all have common attributes, you can use the group selector to avoid repeated definitions multiple times. This can save a lot of bytes.
For example, to define the font, color, and margin of all titles, you can write as follows:
H1, H2, H3, H4, H5, H6 {
Font-family: "lucida Grande", lucida, Arial, Helvetica, sans-serif;
Color: #333;
Margin: 1em 0;
}
If an independent style needs to be defined for some elements during use, you can add a new definition to overwrite the old one, for example:
H1 {font-size: 2em ;}
H2 {font-size: 1.6em ;}
12. Specify the link style in the correct order
When you use CSS to define multiple state styles of links, pay attention to the order in which they are written. The correct order is: Link: visited: hover: active. The first letter is "lvha". You can remember it as "love hate" (dislike ). For more information about this definition, see link specificity by Eric Meyer.
If your user needs to use a keyboard to control the focus of the current link, you can also define the focus attribute. : The effect of the Focus attribute depends on the position you write. If you want the focus element to display the hover effect, you can write the focus before the hover. If you want the focus effect to replace: for hover effect, you can put: Focus behind: hover.
13. Clear floating
A very common CSS problem is that when floating is used, the lower layer is overwritten by the floating layer, or the nested child layer in the layer is out of the outer range.
The general solution is to add an additional element after the floating layer, such as a div or a Br, and define its style as clear: Both. This method is far-fetched. Fortunately, there is still a good solution. For more information, see the article "how to clear floats without structural markup" (Note: This site will translate this article as soon as possible ).
The above two methods can solve the problem of floating exceeding, but what if you really need to clear the objects in the layer or layer? A simple method is to use the overflow attribute. This method was originally published in simple clearing of floats and has been widely discussed in clearance and super simple clearing floats.
The above clear method is more suitable for you. It depends on the specific situation and will not be discussed here. In addition, some excellent articles on Float applications have been clearly stated. We recommend that you read: floatutorial, containing floats, and float layouts.
14. Center horizontally (centering)
This is a simple technique, but it is worth repeating it again, because I have seen many new users asking this question: how to center CSS horizontally? You need to define the element width and the horizontal margin. If your layout is contained in a layer (container), it is like this:
You can define it to center horizontally as follows:
# Wrap {
Width: 760px;/* change the width of your Layer */
Margin: 0 auto;
}
However, ie5/win cannot correctly display this definition. We use a very useful technique to solve this problem: Use the text-align attribute. Like this:
Body {
Text-align: center;
}
# Wrap {
Width: 760px;/* change the width of your Layer */
Margin: 0 auto;
Text-align: left;
}
Text-align: center of the first body. The rule defines that all the elements of the body in ie5/win are centered (other browsers only center the text), and the second text-align: left; is to place the text in # warp to the left.
15. Import and hide CSS
Because the browser of the old version does not support CSS, a common practice is to use the @ import technique to hide CSS. For example:
@ Import URL ("main.css ");
However, this method does not work for ie4, which makes me a headache for a while. Later I used the following statement:
@ Import "main.css ";
In this way, CSS can be hidden in ie4, and 5 bytes are saved. For more information about the @ import syntax, see centricle's CSS Filter chart.
16. Optimization for IE
Sometimes, you need to define some special rules for IE browser bugs. Here there are too many CSS skills (Hacks). I only use either of them, whether Microsoft is better able to support CSS in the upcoming IE7 beta version, these two methods are the safest.
- 1. annotation Method
- (A) hide a CSS definition in IE. You can use the child selector ):
HTML> body P {
/* Definition content */
}
- (B) The following statement can only be understood by IE (hidden from other browsers)
* Html p {
/* Declarations */
}
- (C) Sometimes you want IE/win to be valid While IE/MAC is hidden. You can use the "backslash" technique:
/*/*/
* Html p {
Declarations
}
/**/
- 2. Conditional comments
Another method, I think, is better than CSS hacks, is to use Microsoft's proprietary attribute condition comments ). With this method, you can define some styles for IE without affecting the definition of the main style table. Like this:
<! -- [If IE]>
<LINK rel = "stylesheet" type = "text/CSS" href = "ie.css"/>
<! [Endif] -->
17. debugging skills: How big is the layer?
When a CSS debugging error occurs, you need to analyze the CSS code line by line like a typographical engineer. I usually define a background color on the problematic layer, so that it is obvious that the layer occupies a lot of space. Some people suggest using border, which is acceptable in general, but the problem is that sometimes border will increase the element size. Border-top and boeder-bottom will destroy the vertical margin value, therefore, it is safer to use background.
Another frequently problematic attribute is outline. Outline looks like a boeder, but does not affect the size or position of the element. Only a few browsers support the outline attribute. All I know is safari, omniweb, and opera.
18. CSS Code Writing Style
When writing CSS Code, everyone has the habit of writing indentation, broken lines, and spaces. After continuous practice, I decided to adopt the following writing style:
Selector1,
Selector2 {
Property: value;
}
When using the Union definition, I usually write a single row for each selector so that they can be found in the CSS file. Add a space between the last selector and braces {, and each definition also writes a line separately. The semicolon directly adds no space after the attribute value.
I used to add points after each attribute value. Although the rule allows the last attribute value to be followed by a semicolon, if you want to add a new style, it is easy to forget to add a semicolon to generate an error, therefore, it is better to add both.
Finally, close braces} write a single row.
Spaces and line breaks help and read.
Top
Reference announcement address: http://www.donews.net/cmic/services/trackbacks/376457.aspx
18-way CSS skills
Recently, some friends have asked me some CSS problems in my work. They are always unable to control CSS and affect the efficiency of CSS. I will analyze and summarize the error to help you make it easier to use CSS.
This article summarizes all my skills and compatibility solutions since I started using the CSS layout method. I would like to share this with you, I will focus on some mistakes that beginners may make (including those I have made myself). If you are already a CSS guru, you may already know these skills. If you have more skills, I hope I can help.
I. Use CSS abbreviations
Using abbreviations can help reduce the size of your CSS file and make it easier to read. For the main rules of CSS abbreviations, see common CSS abbreviations syntax summary, which is not described here.
Ii. Define the unit unless the value is 0
Unit that forgets to define the size is a common mistake for beginners of CSS. In HTML, you can write only width = "100", but in CSS, you must give an accurate unit, for example, width: 100px width: 100em. There are only two exceptions. The unit is not defined: the Row Height and the 0 value. Other values must follow the unit. Note that do not add spaces between values and units.
Iii. Case Sensitive
When CSS is used in XHTML, the element names defined in CSS are case sensitive. To avoid this error, we recommend that all definition names be in lower case.
The values of class and ID are also case-sensitive in HTML and XHTML. If you must write them in combination with uppercase and lowercase, make sure that your CSS definition is consistent with the tags in XHTML.
4. Cancel the element limitation before class and ID
When you write an element to define a class or ID, you can omit the previous element limitation, because ID is unique in a page, and clas s can be used multiple times on the page. It makes no sense to limit an element. For example:
Div # Content {/* declarations */}
Fieldset. Details {/* declarations */}
Can be written
# Content {/* declarations */}
. Details {/* declarations */}
This saves some bytes.
5. Default Value
Generally, the default value of padding is 0, and the default value of background-color is transparent. However, the default values may be different in different browsers. If there is a conflict, You can first define that the margin and padding values of all elements are 0 at the beginning of the style sheet, as shown in the following code:
*{
Margin: 0;
Padding: 0;
}
6. Do not need to repeatedly define the value that can be inherited
In CSS, the child element automatically inherits the attribute values of the parent element, such as color and font. defined in the parent element, the child element can be inherited directly without repeated definitions. However, the browser may use some default values to overwrite your definition.
VII. Recent priority principle
If there are multiple definitions of the same element, the closest (minimum level) is the highest priority. For example, there is such a piece of code.
Update: lorem ipsum dolor set
In the CSS file, you have defined the element P and a class "Update"
P {
Margin: 1em 0;
Font-size: 1em;
Color: #333;
}
. Update {
Font-weight: bold;
Color: #600;
}
In these two definitions, class = "Update" will be used because the class is closer to P. For more information, see W3C calculating a selector's specificity.
8. multi-class definition
A tag can define multiple classes at the same time. For example, we first define two styles. The first style background is #666, and the second style has a border of 10 PX.
. One {width: 200px; Background: #666 ;}
. Two {border: 10px solid # f00 ;}
In the Page code, we can call
<Div class = "One Two"> </div>
In this way, the final display effect is that the DIV has both a background of #666 and a border of 10 PX. Yes. You can try it.
9. Use the sub-selector (descendant selectors)
CSS beginners do not know that using sub-selectors is one of the reasons that affect their efficiency. The sub-selector can help you save a lot of class definitions. Let's look at the following code:
<Div id = "subnav">
<Ul>
<Li class = "subnavitem"> <a href = "#" class = "subnavitem"> Item 1 </a> </LI>
<Li class = "subnavitemselected"> <a href = "#" class = "subnavitemselected"> Item 1 </a> </LI>
<Li class = "subnavitem"> <a href = "#" class = "subnavitem"> Item 1 </a> </LI>
</Ul>
</Div>
The CSS definition of this Code is:
Div # subnav ul {/* some styling */}
Div # subnav ul Li. subnavitem {/* some styling */}
Div # subnav ul Li. subnavitem A. subnavitem {/* some styling */}
Div # subnav ul Li. subnavitemselected {/* some styling */}
Div # subnav ul Li. subnavitemselected A. subnavitemselected {/* some styling */}
You can use the following method to replace the above Code
<Ul id = "subnav">
<Li> <a href = "#"> Item 1 </a> </LI>
<Li class = "Sel"> <a href = "#"> Item 1 </a> </LI>
<Li> <a href = "#"> Item 1 </a> </LI>
</Ul>
The style definition is:
# Subnav {/* some styling */}
# Subnav Li {/* some styling */}
# Subnav A {/* some styling */}
# Subnav. Sel {/* some styling */}
# Subnav. Sel A {/* some styling */}
Using a sub-selector can make your code and CSS more concise and easier to read.
10. Do not quote the background image path
To reduce the number of bytes, we recommend that you do not quote the path of the background image because the quotation marks are not required. For example:
Background: URL ("images/***. GIF") #333;
Can be written
Background: URL (images/***. GIF) #333;
If you add quotation marks, some browser errors may occur.
11. Group selectors)
When some element types, classes, and IDs all have common attributes, you can use the group selector to avoid repeated definitions multiple times. This can save a lot of bytes.
For example, to define the font, color, and margin of all titles, you can write as follows:
H1, H2, H3, H4, H5, H6 {
Font-family: "lucida Grande", lucida, Arial, Helvetica, sans-serif;
Color: #333;
Margin: 1em 0;
}
If an independent style needs to be defined for some elements during use, you can add a new definition to overwrite the old one, for example:
H1 {font-size: 2em ;}
H2 {font-size: 1.6em ;}
12. Specify the link style in the correct order
When you use CSS to define multiple state styles of links, pay attention to the order in which they are written. The correct order is: Link: visited: hover: active. The first letter is "lvha". You can remember it as "love hate" (dislike ). For more information about this definition, see link specificity by Eric Meyer.
If your user needs to use a keyboard to control the focus of the current link, you can also define the focus attribute. : The effect of the Focus attribute depends on the position you write. If you want the focus element to display the hover effect, you can write the focus before the hover. If you want the focus effect to replace: for hover effect, you can put: Focus behind: hover.
13. Clear floating
A very common CSS problem is that when floating is used, the lower layer is overwritten by the floating layer, or the nested child layer in the layer is out of the outer range.
The general solution is to add an additional element after the floating layer, such as a div or a Br, and define its style as clear: Both. This method is far-fetched. Fortunately, there is still a good solution. For more information, see the article "how to clear floats without structural markup" (Note: This site will translate this article as soon as possible ).
The above two methods can solve the problem of floating exceeding, but what if you really need to clear the objects in the layer or layer? A simple method is to use the overflow attribute. This method was originally published in simple clearing of floats and has been widely discussed in clearance and super simple clearing floats.
The above clear method is more suitable for you. It depends on the specific situation and will not be discussed here. In addition, some excellent articles on Float applications have been clearly stated. We recommend that you read: floatutorial, containing floats, and float layouts.
14. Center horizontally (centering)
This is a simple technique, but it is worth repeating it again, because I have seen many new users asking this question: how to center CSS horizontally? You need to define the element width and the horizontal margin. If your layout is contained in a layer (container), it is like this:
You can define it to center horizontally as follows:
# Wrap {
Width: 760px;/* change the width of your Layer */
Margin: 0 auto;
}
However, ie5/win cannot correctly display this definition. We use a very useful technique to solve this problem: Use the text-align attribute. Like this:
Body {
Text-align: center;
}
# Wrap {
Width: 760px;/* change the width of your Layer */
Margin: 0 auto;
Text-align: left;
}
Text-align: center of the first body. The rule defines that all the elements of the body in ie5/win are centered (other browsers only center the text), and the second text-align: left; is to place the text in # warp to the left.
15. Import and hide CSS
Because the browser of the old version does not support CSS, a common practice is to use the @ import technique to hide CSS. For example:
@ Import URL ("main.css ");
However, this method does not work for ie4, which makes me a headache for a while. Later I used the following statement:
@ Import "main.css ";
In this way, CSS can be hidden in ie4, and 5 bytes are saved. For more information about the @ import syntax, see centricle's CSS Filter chart.
16. Optimization for IE
Sometimes, you need to define some special rules for IE browser bugs. Here there are too many CSS skills (Hacks). I only use either of them, whether Microsoft is better able to support CSS in the upcoming IE7 beta version, these two methods are the safest.
- 1. annotation Method
- (A) hide a CSS definition in IE. You can use the child selector ):
HTML> body P {
/* Definition content */
}
- (B) The following statement can only be understood by IE (hidden from other browsers)
* Html p {
/* Declarations */
}
- (C) Sometimes you want IE/win to be valid While IE/MAC is hidden. You can use the "backslash" technique:
/*/*/
* Html p {
Declarations
}
/**/
- 2. Conditional comments
Another method, I think, is better than CSS hacks, is to use Microsoft's proprietary attribute condition comments ). With this method, you can define some styles for IE without affecting the definition of the main style table. Like this:
<! -- [If IE]>
<LINK rel = "stylesheet" type = "text/CSS" href = "ie.css"/>
<! [Endif] -->
17. debugging skills: How big is the layer?
When a CSS debugging error occurs, you need to analyze the CSS code line by line like a typographical engineer. I usually define a background color on the problematic layer, so that it is obvious that the layer occupies a lot of space. Some people suggest using border, which is acceptable in general, but the problem is that sometimes border will increase the element size. Border-top and boeder-bottom will destroy the vertical margin value, therefore, it is safer to use background.
Another frequently problematic attribute is outline. Outline looks like a boeder, but does not affect the size or position of the element. Only a few browsers support the outline attribute. All I know is safari, omniweb, and opera.
18. CSS Code Writing Style
When writing CSS Code, everyone has the habit of writing indentation, broken lines, and spaces. After continuous practice, I decided to adopt the following writing style:
Selector1,
Selector2 {
Property: value;
}
When using the Union definition, I usually write a single row for each selector so that they can be found in the CSS file. Add a space between the last selector and braces {, and each definition also writes a line separately. The semicolon directly adds no space after the attribute value.
I used to add points after each attribute value. Although the rule allows the last attribute value to be followed by a semicolon, if you want to add a new style, it is easy to forget to add a semicolon to generate an error, therefore, it is better to add both.
Finally, close braces} write a single row.
Spaces and line breaks help and read.
Top
Reference announcement address: http://www.donews.net/cmic/services/trackbacks/376457.aspx