浏览器本身是设置一些默认的css属性,这个属性的加载位置是在
CSSStyleSelector.cpp
static void loadFullDefaultStyle()
{
if (simpleDefaultStyleSheet) {
ASSERT(defaultStyle);
delete defaultStyle;
delete simpleDefaultStyleSheet;
defaultStyle = new CSSRuleSet;
simpleDefaultStyleSheet = 0;
} else {
ASSERT(!defaultStyle);
defaultStyle = new CSSRuleSet;
defaultPrintStyle = new CSSRuleSet;
defaultQuirksStyle = new CSSRuleSet;
}
// Strict-mode rules.
String defaultRules = String(htmlUserAgentStyleSheet, sizeof(htmlUserAgentStyleSheet)) + RenderTheme::defaultTheme()->extraDefaultStyleSheet();
CSSStyleSheet* defaultSheet = parseUASheet(defaultRules);
defaultStyle->addRulesFromSheet(defaultSheet, screenEval());
defaultPrintStyle->addRulesFromSheet(defaultSheet, printEval());
// Quirks-mode rules.
String quirksRules = String(quirksUserAgentStyleSheet, sizeof(quirksUserAgentStyleSheet)) + RenderTheme::defaultTheme()->extraQuirksStyleSheet();
CSSStyleSheet* quirksSheet = parseUASheet(quirksRules);
defaultQuirksStyle->addRulesFromSheet(quirksSheet, screenEval());
}
红色的部分就是对应的用自动生成工具生成的cpp文件
最终将默认的属性和访问网站的css属性进行混合,比较出优先级,得到最终一张css的渲染列表
最终display到页面上。