CSS 视觉格式化模型
cssweb developmentfront end technology更新于 2025/1/10 18:20:17
CSS 视觉格式化模型是一种对应于算法的模型,该算法处理和转换文档中的每个元素,以生成一个或多个符合 CSS 盒子模型的盒子。
生成的盒子的布局取决于几个属性,例如 −
- 尺寸
- 类型 − atomic inline-level、block、inline 或 inline-block
- 定位 − absolute、float 或 normal
- 与文档的子元素和相邻元素的关系
- 外部信息 −视口和图像的宽度 - 高度等。
处理元素的 CSS 盒子生成 −
- 块级
- 这些元素会强制在自身上下换行,并占用可用的整个宽度,即使其内容不需要换行。
- 例如:分区 (<div>)、标题(<h1> 至 <h6>)等。
- 内联级
- 这些元素不会强制在自身上下换行,并且仅占用内容所需的宽度。
- 例如:跨度 (<span>)、强元素(<strong>)
示例
我们来看一个块级框生成的示例 −
<!DOCTYPE html>
<html>
<head>
<title>HTML Heading</title>
<style>
form {
width:70%;
margin: 0 auto;
text-align: center;
}
* {
padding: 2px;
margin:5px;
}
input[type="button"] {
border-radius: 10px;
}
#headingPreview h2{
background-color: #DC3545;
}
</style>
</head>
<body>
<form>
<fieldset>
<legend>HTML Heading</legend>
<input type="text" id="textSelect" placeholder="Type Heading Here...">
<div id="radioBut">
<label>H1</label><input class="radio" type="radio" name="heading" value="h1" checked >
<label>H2</label><input class="radio" type="radio" name="heading" value="h2">
<label>H3</label><input class="radio" type="radio" name="heading" value="h3">
<label>H4</label><input class="radio" type="radio" name="heading" value="h4">
<label>H5</label><input class="radio" type="radio" name="heading" value="h5">
<label>H6</label><input class="radio" type="radio" name="heading" value="h6">
</div>
<div>Heading Preview: <span id="headingPreview">Output will show up here</span></div>
<input type="button" onclick="changeHeading()" value="Preview">
</fieldset></form>
<script>
var textSelect = document.getElementById("textSelect");
var headingPreview = document.getElementById("headingPreview");
function changeHeading() {
if(textSelect.value === '')
headingPreview.innerHTML = 'Write a Heading';
else{
for(var i=0; i<6; i++){
var radInp = document.getElementsByClassName('radio')[i];
if(radInp.checked === true && textSelect.value !== ''){
headingPreview.innerHTML = '<'+radInp.value+'>'+textSelect.value+'</'+radInp.value+'>';
headingPreview.innerHTML += '<'+radInp.value+'>'+textSelect.value+'</'+radInp.value+'>';
}
}
}
}
</script></body></html>
输出
这将产生以下输出 −
点击‘预览’按钮后,文本字段为空,减号

点击‘预览’按钮后,文本字段不为空,且‘h2’单选按钮已选中,减号

示例
我们来看一个内联级别框生成的示例 −
<!DOCTYPE html>
<html>
<head>
<title>em element</title>
<style>
form {
width:70%;
margin: 0 auto;
text-align: center;
}
* {
padding: 2px;
margin:5px;
}
input[type="button"] {
border-radius: 10px;
}
em{
background-color: #FF8A00;
}
</style>
</head>
<body>
<form>
<fieldset>
<legend>em-element</legend>
<label for="textSelect">Formatter: </label>
<input id="textSelect" type="text" placeholder="John Doe">
<input type="button" onclick="convertItalic()" value="Check">
<div id="divDisplay"></div>
</fieldset>
</form>
<script>
var divDisplay = document.getElementById("divDisplay");
var textSelect = document.getElementById("textSelect");
function convertItalic() {
for(i=0; i<2; i++){
var italicObject = document.createElement("EM");
var italicText = document.createTextNode(textSelect.value);
italicObject.appendChild(italicText);
divDisplay.appendChild(italicObject);
}
}
</script>
</body>
</html>
输出
这将产生以下输出 −
点击"检查"按钮前 −

点击"检查"按钮后 −

相关文章
有用资源
css 参考教程 - 该教程包含有关 css 的更多信息:https://www.cainiaomax.com/css/

