# Pointer-Event 禁用事件
给这个元素设置这个样式后不会再有任何的点击事件触发
<style>
.btn {
pointer-events: none;
}
</style>
<body>
<div class="btn" id="btn">
点击
</div>
</body>
<script>
var btn = document.getElementById("btn");
btn.onclick = function () {
// 点击事件不在触发
console.log(11);
};
</script>
# 用 Caret-Color 来自定义光标的样式
<style>
input {
/* input 输入框的颜色会变成红色 */
caret-color: red;
}
</style>
<body>
<input type="text" />
</body>
# 用 User-Select 来禁用文本选中
body {
user-select: none; //页面中的文本不能被选中
}
# css 伪类及伪元素的使用
# 伪类
伪类更多的定义的是状态,如:hover,或者说是一个可以使用 CSS 进行修饰的特定的特殊元素,如:first-child 伪类使用一个冒号: 常见伪类:
- :hover
- :active
- :focus
- :visited
- :link
- :lang
- :first-child
- :last-child
- :not
# 伪元素
伪元素简单来说就是不存在于 DOM 文档树中的虚拟的元素,它们和 HTML 元素一样,但是你又无法使用 JavaScript 去获取,如:before 伪元素使用两个冒号:: 常见伪元素:
- ::before
- ::after
- ::first-letter
- ::first-line
# 用:valid 和:invalid 来做表单即时校验
html5 丰富了表单元素,提供了类似 required,email,tel 等表单元素属性。同样的,我们可以利用:valid 和:invalid 来做针对 html5 表单属性的校验。
- :required 伪类指定具有 required 属性的表单元素
- :valid 伪类指定一个通过匹配正确的所要求的表单元素
- :invalid 伪类指定一个不匹配指定要求的表单元素
# 用:target 来实现折叠面板
TIP
:target 是文档的内部链接,即 URL 后面跟有锚名称 #,指向文档内某个具体的元素。
利用 :target 的特性可以实现以前只能使用 JavaScript 实现的显示隐藏或者 Collapse 折叠面板
<div class="t-collapse">
<a class="collapse-target" href="#modal3">target 3</a>
<div class="collapse-body" id="modal3">
<a class="collapse-close" href="#">target 3</a>
<p>
:target 是文档的内部链接,即 URL 后面跟有锚名称
#,指向文档内某个具体的元素。
</p>
</div>
</div>
.t-collapse {
position: relative;
}
.t-collapse > .collapse-target {
display: block;
}
.t-collapse > .collapse-body {
display: none;
}
.t-collapse > .collapse-body:target {
display: block;
}
.t-collapse > .collapse-body:target .collapse-close {
display: block;
border-bottom: 1px solid #ddd;
}
.t-collapse > .collapse-body .collapse-close {
display: none;
position: absolute;
top: 0;
width: 100%;
left: 0;
}
# Stickey Stack 实现吸顶效果
给要吸顶的元素设置 position:stictty 就可以达到吸顶效果
<style>
.box {
height: 200px;
width: 100px;
border: 1px solid #ccc;
overflow-y: auto;
}
.nav {
position: sticky;
top: 0;
width: 100%;
background: #000;
color: #fff;
}
</style>
<body>
<div class="box">
<ul>
<li class="nav">A</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li class="nav">B</li>
<li>2222</li>
<li>2222</li>
<li>2222</li>
<li>2222</li>
<li>2222</li>
<li>2222</li>
<li>2222</li>
<li>2222</li>
<li>2222</li>
<li>2222</li>
<li>2222</li>
<li>2222</li>
<li>2222</li>
<li>2222</li>
<li class="nav">C</li>
<li>3333</li>
<li>3333</li>
<li>3333</li>
<li>3333</li>
<li>3333</li>
<li>3333</li>
<li>3333</li>
<li>3333</li>
<li>3333</li>
<li>3333</li>
<li>3333</li>
</ul>
</div>
</body>
# Scroll Snap 滑动操作
可以控制滑动时滑动效果(是否一个滑块滑动结束来显示下一个滑块) 核心代码:
/* 父元素 */
scroll-snap-type: x mandatory;
/* 子元素 */
scroll-snap-align: center;
全部代码
<style>
.box {
text-align: left;
width: 250px;
height: 250px;
overflow-x: auto;
display: flex;
box-sizing: border-box;
border: 1px solid #000;
}
.li {
flex: 0 0 250px;
width: 250px;
background-color: #663399;
color: #fff;
font-size: 30px;
display: flex;
align-items: center;
justify-content: center;
scroll-snap-align: center;
}
</style>
<body>
<div class="box" style="scroll-snap-type: x mandatory;">
<div class="li">1</div>
<div class="li">2</div>
<div class="li">3</div>
<div class="li">4</div>
</div>
</body>
# 有用但被忽略的选择器
用:not 来排除其他选择器
用::selection 来美化选中文本
用::placeholder 来美化占位符