Understand the CSS search matching principle, so that CSS more concise, efficient _ Experience Exchange

Source: Internet
Author: User
Look at 1 simple css:

Div#divbox p span.red{color:red, according to our understanding of this CSS, the browser first looks for the DIV element with ID Divbox, and when found, finds all the p elements below it, and then finds all span elements, When a span is found to be red, the style is applied. How simple and understandable the principle, but this understanding is completely opposite, wrong.


Matching principle:

Browser CSS matching is not lookup from left to right, but from right to left. For example Div#divbox p span.red{color:red, the browser's lookup order is as follows:

First look for all class= ' red ' span elements in HTML, find out if there are p elements in their parents ' elements, and then determine if there is a DIV element with ID divbox in the parent element of P, if all exist then match.

The benefit of browsers looking from right to left is to filter out extraneous style rules and elements as early as possible. For example, HTML and CSS as follows:

Copy Code code as follows:

<style>
Div#divbox p span.red{color:red;}
<style>
<body>
<div id= "Divbox" >
<p><span>s1</span></p>
<p><span>s2</span></p>
<p><span>s3</span></p>
<p><span class= ' Red ' >s4</span></p>
</div>
</body>

If you search from left to right, you will find many unrelated p and span elements first. If you search from right to left, you first find the elements of the <span class= ' Red ' >. Firefox called this search method for key selector (keyword query), the so-called keyword is the final (rightmost) rules of style rules, the above key is span.red.


Simple, efficient CSS:
The so-called efficient CSS is to let the browser find the style matching elements of the time as far as possible to search, listed below some of our common writing CSS to make some inefficient errors (also I used to make mistakes, but also the old thought that writing is efficient):

1. Do not use the label signature before the ID selector
General wording: Div#divbox
Better writing: #divBox
Explanation: Because the ID selector is unique, adding a Div adds an unnecessary match.

2. Do not use the label signature before the class selector
General wording: span.red
Better writing:. Red
Explanation: Same as the first, but if you define more than one. Red, and under different elements is the style is not the same, you can not remove, such as your CSS file is defined as follows:
p.red{color:red;}
Span.red{color: #ff00ff}
If this definition is not removed, it will be confused after the removal, but it is advisable not to write
3. Use of hierarchical relationships as little as possible
General wording: #divBox P. red{color:red;}
Better writing:. red{.}

4. Use class instead of hierarchical relationships
General wording: #divBox ul Li A{display:block;}
Better writing:. Block{display:block;}

PS: See some students from right to left of the theory to remain skeptical, below posted Firefox and Google's 2 related CSS interpretation of the article for your reference

Mozilla Firefox:https://developer.mozilla.org/en/writing_efficient_css

Google page-speed:http://code.google.com/intl/zh-cn/speed/page-speed/docs/rendering.html
Related Article

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.