给定一张精灵图 , 如下所示 :
将其设置到 Web 页面中 , 显示如下样式 :
HTML 标签元素 都有自己的 默认内边距 和 外边距 样式 , 如下所示 :
<body>
元素 : 默认外边距 常见为 8px 或 16px , 默认内边距 常为 0 ;<h1>, <h2>, <h3>, <h4>, <h5>, <h6>
元素 : 默认的 上边距和下边距可能都在 16px 到 24px 之间 , 内边距 通常为 0 ;<p>
元素 : 默认的上边距和下边距 为 16px 或 1em , 默认内边距 0 ;<ul>, <ol>
元素 : 默认的上边距和下边距 16px 或 1em , 默认的左内边距 40px 或 2em ;<li>
元素 : 默认外边距 0 , 默认的左内边距 20px 或 1em ;<blockquote>
引用块元素 : 上边距和下边距可能都在 16px 到 32px 之间 , 左内边距 为 40px 或 2em ;本案例中 , 就 使用了 <li>
元素 进行页面结构布局 , 布局时需要使用到 浮动 样式 , 计算换行时 , 每个像素宽高都要精确计算 ;
如果要精确到像素级别进行布局 , 默认的 内外边距 margin 和 padding 是不可接受的 , 必须将默认的内外边距取消 ;
下面的代码中 , 使用 通用选择器 *
将网页上所有 HTML 元素的 外边距 ( margin ) 和 内边距 ( padding ) 都设置为 0 ;
/* 全部元素的通用样式设置 */
* {
/* 去除所有元素的外边距(margin) */
margin: 0;
/* 去除所有元素的内边距(padding) */
padding: 0;
}
上述代码操作 用于 重置 或 初始化 样式 , 使得所有 元素 的 外边距 和 内边距 都从相同的起点开始 ;
确保 在不同浏览器中 , 元素的 布局 和 对齐 方式 不会因为默认的外边距和内边距值而有所不同 , 从而减少跨浏览器的样式差异 ;
li 标签元素的默认样式如下所示 , li 元素是 块级元素 , 并且在左侧有小圆点 ;
设置如下代码 , 可以清除 左侧的 小圆点 ;
/* 设置所有 li 元素的样式 */
li {
/* 去除 li 元素的默认列表样式(如项目符号或数字) */
list-style-type: none;
}
ul 和 li 元素 都是 块级元素 ;
<ul>
无序列表 标签元素 是一个 块级元素 , 表示 列表容器 , 该元素会在页面上占据整行 , 并在其前后添加换行 ;<li>
列表项 是一个 块级元素 , 用于表示 </ul>
无序列表 或 </ol>
有序列表 中的一个条目 ; 每个 <li>
元素在其父容器中占据整行 , 尽管 <li>
元素内的内容 可以是 行内元素 或 块级元素 , <li>
元素本身作为一个列表项是 块级元素 ;块级元素 特点 :
行内元素 特点 :
当 li 元素 设置了 float 浮动 属性 , 如 : float: left;
或 float: right;
, 该元素会脱离正常的 标准流 , 并向其浮动方向排列 ;
.box li {
/* 将 li 元素浮动到左侧,使它们在同一行显示 */
float: left;
浮动元素 会从其所在 块级容器 的 左侧或右侧 开始排列 , 直到其内容的宽度被填满或者达到容器的边界 ,
当浮动元素的宽度总和超出其包含块的宽度时 , 后续的浮动元素会自动换行到下一行 ;
在该案例中 , 使用了 精灵图 技术来显示不同的背景图像 , 精灵图是一种将多个图像合并到一个单独图像文件中的技术 , 以减少网页加载时间 ;
精灵图 的 设置要点 就是 设置 背景图像 background: url(images/sprite.png) no-repeat;
, 设置了 li
元素的背景图像为 images/sprite.png
, 并确保图像不重复 no-repeat
,
/* 设置 .box 内部 li 元素的样式 */
.box li {
/* 将 li 元素浮动到左侧,使它们在同一行显示 */
float: left;
/* 设置 li 元素的宽度为 24 像素 */
width: 24px;
/* 设置 li 元素的高度为 24 像素 */
height: 24px;
/* 设置 li 元素的背景颜色为粉色 */
background-color: pink;
/* 设置 li 元素的外边距为 15 像素 */
margin: 15px;
/* 设置 li 元素的背景图像,背景不重复 */
background: url(images/sprite.png) no-repeat;
}
通过 JavaScript 动态设置 backgroundPosition 属性 , 以调整精灵图中每个图像的位置 ;
// 1. 获取 box 元素 中的 li 元素
var lis = document.querySelectorAll('li');
// 2. 为每个 li 设置不同的精灵图
for (var i = 0; i < lis.length; i++) {
// 精灵图中 每个图片显示位置是 0,44 0,88 0,132 y 坐标是 44 的倍数
// 显示第一张精灵图设置背景位置 0 0
// 显示第二张精灵图设置背景位置 0 -44
// 显示第三张精灵图设置背景位置 0 -88
var start_height = i * 44;
lis[i].style.backgroundPosition = '0 -' + start_height + 'px';
}
代码示例 :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Inline Style Operation Example</title>
<style>
/* 全部元素的通用样式设置 */
* {
/* 去除所有元素的外边距(margin) */
margin: 0;
/* 去除所有元素的内边距(padding) */
padding: 0;
}
/* 设置所有 li 元素的样式 */
li {
/* 去除 li 元素的默认列表样式(如项目符号或数字) */
list-style-type: none;
}
/* 设置 .box 类的样式 */
.box {
/* 设置 .box 元素的宽度为 250 像素 */
width: 250px;
/* 设置 .box 元素的上下外边距为 100 像素,并使其在水平居中 */
margin: 100px auto;
}
/* 设置 .box 内部 li 元素的样式 */
.box li {
/* 将 li 元素浮动到左侧,使它们在同一行显示 */
float: left;
/* 设置 li 元素的宽度为 24 像素 */
width: 24px;
/* 设置 li 元素的高度为 24 像素 */
height: 24px;
/* 设置 li 元素的背景颜色为粉色 */
background-color: pink;
/* 设置 li 元素的外边距为 15 像素 */
margin: 15px;
/* 设置 li 元素的背景图像,背景不重复 */
background: url(images/sprite.png) no-repeat;
}
</style>
</head>
<body>
<div class="box">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<script>
// 1. 获取 box 元素 中的 li 元素
var lis = document.querySelectorAll('li');
// 2. 为每个 li 设置不同的精灵图
for (var i = 0; i < lis.length; i++) {
// 精灵图中 每个图片显示位置是 0,44 0,88 0,132 y 坐标是 44 的倍数
// 显示第一张精灵图设置背景位置 0 0
// 显示第二张精灵图设置背景位置 0 -44
// 显示第三张精灵图设置背景位置 0 -88
var start_height = i * 44;
lis[i].style.backgroundPosition = '0 -' + start_height + 'px';
}
</script>
</body>
</html>
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有