CSS compatibility for Ie678,ff,chrome

Source: Internet
Author: User
Tags visibility

Reference: http://www.liuzp.com/css/15.html

CSS compatibility is generally the front-end beginners face a headache problem, it is inevitable to write out the CSS in the various browser effects are different, so all kinds of CSS hack written out, in fact, in a normative project development, CSS Hack are advocated can not use as much as possible, Because there are many situations when the compatibility problem is not the norm, but there are some bugs in the browser itself, especially the evil ie.

Tip: What is CSS hack?

Because of different browsers, such as IE6, IE7, IE8, Firefox, and so on, the parsing of CSS is not the same, so it will result in the resulting page effect is not the same, not get the page effect we need. At this time we need to write different CSS for different browsers, so that it can be compatible with different browsers, can be in different browsers can also get the desired page effect. The process of writing different CSS code for different browsers is called CSS hack, also called CSS hack.

CSS hack compatibility table for each browser:


IE6 IE7 IE8 FireFox Chrome Safari
!important
Y
Y

- Y




* Y Y



*+
Y



\9 Y Y Y


/

Y


Nth-of-type (1)



Y Y
#test {color:red;/* All browsers support */color:red!important;/* Firefox, IE7 support */_color:red;/* IE6 support */*color:red;/* IE6, IE7 support */+ color:red; /* IE7 support */color:red\9; /* IE6, IE7, IE8 support */color:red\0; /* IE8 support */}body:nth-of-type (1) p{color:red;}/* Chrome, Safari support */

Other Notes:

1, if your page to IE7 compatibility without problems, and do not want to modify the existing code, but also in the normal use of IE8, Microsoft claims that developers only need to add a line of code on the currently compatible IE7 site to solve the problem, this code is as follows:

<meta http-equiv= "x-ua-compatible" content= "ie=7″/>

2, Body:nth-of-type (1) If this is the case, the global lookup body will correspond to the first <body>.

3, there are other formulations, such as:

*html #test {} or *+html #test {}

4, *+html to IE7 hack must ensure that the top of the HTML has the following declaration: HTTP://WWW.W3.ORG/TR/HTML4/LOOSE.DTD

5, Order: Firefox, IE8, IE7, IE6 in turn.


First, CSS HACK

Here are two ways to solve almost all of today's hack

1.!important

With IE7 support for!important, the!important method is now only for IE6 hack. (Note the wording, remember that the declaration location needs to be advanced)

#test {width:100px!important;/* IE7+FF */width:80px;/* IE6 */}

2. Ie6/ie77 to Firefox

*+html and *html are specific to the IE label, Firefox does not support, and *+html for IE7 unique label.

#wrapper {width:120px;}/* FireFox */*html #wrapper {width:80px;}/* IE6 fixed */*+html #wrapper {width:60px;}/* IE7 fix Ed, note the order *

Attention:

*+html to IE7 hack must ensure that the HTML top has the following declaration:

<! DOCTYPE HTML PUBLIC "-//w3c//dtd HTML 4.01 transitional//en" "HTTP://WWW.W3.ORG/TR/HTML4/LOOSE.DTD" >


Second, Universal float closed

Add the following code to the CSS, the need to close the div plus class= "clearfix" can be done.

<style>/* 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 */</style>


Third, other compatibility skills (the following excerpt from the Internet, does not mean that individuals fully agree with their solutions)

1, FF setting padding after the div will cause width and height to increase, but IE will not. (Can be resolved with!important)

2, centering problem.

1). Center vertically. Set Line-height to the same height as the current Div, and then through Vertical-align:middle. (Note that the content does not wrap.)

2). Center horizontally. margin:0 Auto; (of course not everything)

3, if you need to give the contents of a tag style, you need to set display:block; (common in navigation labels)

4, the FF and IE to the BOX understanding of the difference caused by 2px is also set to float div under IE margin doubled and so on.

5, UL label under FF The default is List-style and padding. It is advisable to declare beforehand to avoid unnecessary trouble. (Common in navigation labels and table of contents)

6, as an external wrapper div do not set dead height, it is best to add Overflow:hidden. To achieve a high degree of self-adaptation.

7, about the hand-shaped cursor. Cursor:pointer. And hand only applies to IE.


1 CSS styles for Firefox IE6 IE7

Most are now using!important to hack, for IE6 and Firefox test can display normally,

But IE7 to!important can be correctly explained, will cause the page did not display as required! Find a needle

IE7 good hack Way is to use "*+html", now with IE7 browsing, there should be no problem.

Now write a CSS that can do this:

#1 {color: #333;}/* Moz */

* HTML #1 {color: #666;}/* IE6 */

*+html #1 {color: #999;}/* IE7 */

Then under Firefox font color display as #333,ie6 under the font color display as #666,ie7 under the font color display as #999.


2 centering issues in CSS layouts

The main style definitions are as follows:

body {text-align:center;}

#center {Margin-right:auto; Margin-left:auto; }

Description

The text-align:center is defined first in the parent element, which means that the content within the parent element is centered, and the setting for IE is already available.

But it can't be centered in Mozilla. The solution is to add "Margin-right:auto" when the child element is defined; Margin-left:auto; ”

It is necessary to note that if you want to use this method to center the entire page, it is recommended that you do not put in a div, you can sequentially split a number of Div,

Just define the Margin-right:auto in each of the split div; Margin-left:auto; You can do it.


3 box models different interpretations

#box {width:600px;//for ie6.0-w\idth:500px;//for ff+ie6.0}

#box {width:600px!important//for ff width:600px;//for ff+ie6.0 width/**/:500px;//for ie6.0-}


4 The double distance generated by the floating IE

#box {float:left; width:100px; margin:0 0 0 100px; In this case, IE will produce 200px distance display:inline; Make floating Ignore}

Here Block,inline two elements, the block element is characterized by: always start on the new line, height, width, row height, the margin can be controlled (block elements), the characteristics of the inline element is: and other elements on the same line,... Uncontrollable (inline element);

#box {display:block;//can simulate a block element display:inline for inline elements;//Achieve the effect of the same row arrangement diplay:table;


IE does not recognize the definition of min-, but in fact it treats the normal width and height as a condition of min. This is a big problem, if you only use width and height,

In the normal browser these two values will not change, if only with min-width and min-height words, ie below is basically not set width and height.

For example, to set the background image, this width is more 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;}


6 minimum width of the page

Min-width is a handy CSS command that allows you to specify that the element should be minimal or less than a certain width, so that the layout is always correct. But IE does not recognize this,

And it actually puts width as the minimum width. To make this command available on IE, put a <div> into the <body> tab and specify a class for the DIV:

Then the CSS is designed like this:

#container {min-width:600px; Width:expression (Document.body.clientWidth < 600?) "600px": "Auto");}

The first min-width is normal, but the width of line 2nd uses JavaScript, which only IE recognizes, which also makes your HTML document less formal. It actually achieves the minimum width by JavaScript's judgment.


7 Clear Float

. hackbox{display:table;//Display the object as a block-element-level table} or. hackbox{Clear:both;}

or join: After (pseudo-object), set what happens after the object, usually in conjunction with content, IE does not support this pseudo-object, non-IE browser support,

So it doesn't affect the Ie/win browser. This is the most troublesome of ... #box: after{content: "."; display:block; height:0; clear:both; visibility:hidden;}


8 div Floating IE text generates 3 pixel bug

The left object floats, the right side is positioned with the left margin of the outer patch, and the text within the right object is spaced 3px 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 the key}

HTML code <div id= "box" > <div id= "left" ></div> <div id= ' right ' ></div></div>


9 attribute Selector (this is not compatible, is a bug to hide CSS)

p[id]{}div[id]{}

This is hidden for IE6.0 and IE6.0 versions, and the FF and opera functions

There is a difference between the property selector and the child selector, the range of the child selector is reduced in form, the range of the property selector is larger, such as P[id], and all P tags have the same type of ID.


Ten IE hide and seek problems

When the div application is complex, there are some links in each column, and the div is prone to hide-and-seek problems.

Some content does not show up when the mouse selects this area is found content is indeed on the page.

WORKAROUND: Use Line-height attribute for #layout or use fixed height and width for #layout. The page structure is as simple as possible.


11 Height not adapted

Height is not adjusted when the height of the inner object changes, the outer height cannot be automatically adjusted, especially when the inner layer object uses

Margin or paddign.

Cases:

<div id= "box" >

Content in the <p>p object </p>

</div>

CSS: #box {background-color: #eee;}

#box p {margin-top:20px;margin-bottom:20px; text-align:center;}

Workaround: Add 2 empty div object CSS code to the P object:. 1{height:0px;overflow:hidden;} Or add the border attribute to the Div.


CSS compatibility for Ie678,ff,chrome

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.