CSS compatibility with browsers is sometimes a headache. Maybe when you understand the skills and principles, you will feel that it is not difficult to collect IE7 from the Internet, 6. Solve the problem of compatibility with Fireofx and sort it out. for Web, try to write code in xhtml format, and DOCTYPE affects CSS processing. As the W3C standard, DOCTYPE must be well known.
CSS skills
1. vertical-align: middle of the div vertical center problem; Increase the line spacing to the line-height: 200px as high as the entire DIV; then insert the text, and the vertical center is formed. The disadvantage is that you need to control the content rather than line feed.
2. The problem of margin doubling is that the margin set for div of float under ie will be doubled. This is a bug in ie6. The solution is to add display: inline to the div. For example, <# div id = "imfloat"> the corresponding css is # IamFloat {float: left; margin: 5px; /* IE: 10px */display: inline;/* IE: 5px */}
4 IE and width and height problems IE does not recognize min-, but in fact it treats normal width and height as min. In this case, the problem is big. If only the width and height are used, the values in the normal browser will not change. If only min-width and min-height are used, the width and height under IE are not set at all. For example, to set a background image, the width is important. To solve this problem, you can: # box {width: 80px; height: 35px;} html> body # box {width: auto; height: auto; min-width: 80px; min-height: 35px ;}
5. The min-width of the page is a very convenient CSS command, which can specify the minimum or no less than a certain width of the element, so as to ensure that the layout is always correct. But IE does not recognize this, but it actually uses width as the minimum width. To make this command usable on IE, you can place <div> under the <body> label and specify a class for div. Then, CSS is designed as follows: # container {min-width: 600px; width: expression (document. body. clientWidth <600? "600px": "auto");} The first min-width is normal, but the width of row 2nd uses Javascript, which is recognized only by IE, this will also make your HTML documents less formal. It actually achieves the minimum width through Javascript judgment.
6. DIV floating IE text generates a 3-pixel bug. The left object float is located on the right side using the left margin of the outer patch. The text in the right object is 3 px away from the left. # box {float: left; width: 800px; }# left {float: left; width: 50% ;}# right {width: 50% ;} * html # left {margin-right:-3px; // This sentence is critical} <div id = "box"> <div id = "left"> </div> <div id = "right"> </div> </div>
8. float div closure; clear floating; adaptive height;
① For example, <# div id = "floatA"> <# div id = "floatB"> <# div id = "NOTfloatC"> the NOTfloatC here does not want to continue translation, instead, we want to move it down. (The attributes of floatA and floatB have been set to float: left;) This code has no problem in IE, and the problem lies in FF. The reason is that NOTfloatC is not a float label and must be closed. Add <# div class = "floatB"> <# div class = "NOTfloatC"> <# div class = "clear"> the position of the div, it must be at the same level as the two div with the float attribute. No nested relationship exists between them; otherwise, an exception occurs. And define the clear style as follows:. clear {clear: both ;}
② Do not set the height of the external wrapper div. In order to make the height automatically adapt, overflow: hidden should be added to the wrapper; when the box containing float is included, the height auto-fit is invalid in IE. In this case, the private attribute layout of IE should be triggered (the Internet Explorer !) Zoom: 1; can be used to achieve compatibility. For example, a wrapper is defined as follows:. colwrapper {overflow: hidden; zoom: 1; margin: 5px auto ;}
③ For typographical layout, the most commonly used css description may be float: left. sometimes we need to make a unified background behind the float div in the n column, for example: <div id = "page"> <div id = "left"> </div> <div id = "center"> </div> <div id = "right"> </div> for example, we want to set the background of the page to blue, the background color of all three columns is blue, but we will find that with the left center right extending down, and the page actually keeps the height unchanged, the problem is that, the reason is that the page is not a float attribute, and because the page is centered, it cannot be set to float, therefore, we should solve <div id = "page"> <div id = "bg" style = "float: left; width: 100% "> <div id =" left "> </div> <div id =" center "> </div> <div id =" right "> </div> </div> </div> embed a float left and the DIV with a width of 100%.
④ Universal float closure (very important !) For details about the principle of clear float, see [How To Clear Floats Without Structural Markup]. Add the following code To Global CSS and add class = "clearfix" To the div To be closed. /* Clear Fix */. clearfix: after {content :". "; display: block; height: 0; clear: both; visibility: hidden ;}. clearfix {display: inline-block;}/* Hide from IE Mac */. clearfix {display: block;}/* End hide from IE Mac * // * end of clearfix */or set as follows :. hackbox {display: table; // display an object as a table at the block element level}
11. The height is not adaptive. When the height of the inner object changes, the outer height cannot be adjusted automatically, especially when the inner object uses margin or paddign. Example: # box {background-color: # eee;} # box p {margin-top: 20px; margin-bottom: 20px; text-align: center ;} <div id = "box"> <p> content in the p object </p> </div> solution: add two empty div object CSS codes to the upper and lower sides of the P object :. 1 {height: 0px; overflow: hidden;} or add the border attribute to the DIV.
19. how to center a layer vertically in the browser. Here we use the absolute percentage position, which is negative from the external patch, the size of the negative value is its own width and height divided by two <style type = "text/css"> <! -- Div {position: absolute; top: 50%; lef: 50%; margin:-100px 0 0-100px; width: 200px; height: 200px; border: 1px solid red ;} --> </style>
FF and IE
1. div center problem div set margin-left, margin-right is already centered when it is set to auto, IE is not, IE needs to set the body to center, first define text-algin: center in the parent element; this means that the content in the parent element is centered.
3. the hover style does not occur after the hyperlink is accessed. The accessed hyperlink style does not have hover and active. Many people should have encountered this problem, the solution is to change the order of CSS properties: L-V-H-A Code: <style type = "text/css"> <! -- A: link {} a: visited {} a: hover {} a: active {} --> </style>
5. UL's padding and margin ul tags have padding values by default in FF, while in IE, only margin has default values. Therefore, ul {margin: 0; padding: is defined first: 0;} solves most problems
7. Inconsistency of BOX Model interpretation the BOX model interpretation in FF and IE is inconsistent, resulting in a 2px difference solution: div {margin: 30px! Important; margin: 28px;} note that the order of the two margin must not be reversed. The attribute IE of important cannot be identified, but can be recognized by other browsers. Therefore, in IE, it is actually interpreted as follows: If div {maring: 30px; margin: 28px} is repeatedly defined, it is executed according to the last one. Therefore, you cannot write only margin: xx px! Important;
9. The most cruel means -! Important; if there is no way to solve some details, you can use this method. FF "! Important will automatically give priority to resolution. However, IE will ignore. tabd1 {background: url (/res/images/up/tab1.gif) no-repeat 0px 0px! Important;/* Style for FF */background: url (/res/images/up/tab1.gif) no-repeat 1px 0px; /* Style for IE */} It is worth noting that the xxxx! Important is placed on the other sentence, which has been mentioned above
11. why can't I fix the fixed height of the containers in the standard browser that cannot support containers under FF text? I want to fix the height of the containers as in IE6, how can I set it to be supported? The method is to remove the min-height: 200px setting for height. Here, we can define {height: auto to take care of IE6 that does not know min-height! Important; height: 200px; min-height: 200px ;}
12. In FireFox, we know how to enable the continuous long field to wrap automatically. in IE, we can directly use word-wrap: break-word. In FF, we use JS to insert
<Style type = "text/css"> <! -- Div {width: 100px; word-wrap: break-word; border: 1px solid red ;} --> </style> <div id = "ff"> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa </div> <scr limit pt type = "text/javascr limit pt">/* <! [CDATA [*/function toBreakWord (el, intLen) {var returns bj = document. getElementById (el); var strContent = obj. innerHTML; var strTemp = ""; while (strContent. length> intLen) {strTemp + = strContent. substr (0, intLen) +"
; "; StrContent = strContent. substr (intLen, strContent. length);} strTemp + ="
; "+ StrContent; obj. innerHTML = strTemp;} if (document. getElementById &&! Document. all) toBreakWord ("ff", 37);/*]> */</scr limit pt>