本文已参与「新人创作礼」活动,一起开启掘金创作之路。
🔥 本文由 程序喵正在路上原创,在稀土掘金首发!
💖 系列专栏:HTML+CSS
🌠 首发时间:2022年9月6日
🦋 欢迎关注🖱点赞👍收藏🌟留言🐾
🌟 一以贯之的努力 不得懈怠的人生
学习目标
✂能够说出显示隐藏的 2 种方式以及区别
元素的显示与隐藏
这种效果,类似于网站广告,当我们点击关闭就不见了,但是我们重新刷新界面,会重新出现
本质:让一个元素在页面中隐藏或显示出来
- display:显示隐藏
- visibility:显示隐藏
- overflow:溢出显示隐藏
1. display
display: none;—— 隐藏对象display: block;—— 除了转换为块级元素之外,同时还有显示元素的意思
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>显示隐藏display</title>
<style>
.peppa {
display: none;
width: 200px;
height: 200px;
background-color: pink;
}
.george {
width: 200px;
height: 200px;
background-color: skyblue;
}
</style>
</head>
<body>
<div class="peppa">佩奇</div>
<div class="george">乔治</div>
</body>
</html>
display 隐藏元素后,不再占有原来的位置
后面应用及其广泛,搭配 JS 可以做很多网页特效
2. visibility
visibility 属性用于指定一个元素应可见还是隐藏
visibility: visible;—— 元素可见visibility: hidden;—— 元素隐藏
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>显示隐藏visibility</title>
<style>
.peppa {
visibility: hidden;
width: 200px;
height: 200px;
background-color: pink;
}
.george {
width: 200px;
height: 200px;
background-color: skyblue;
}
</style>
</head>
<body>
<div class="peppa">佩奇</div>
<div class="george">乔治</div>
</body>
</html>
visibility 隐藏元素后,继续占有原来的位置
如果隐藏元素想要原来位置,就用 visibility: hidden;
如果隐藏元素不想要原来位置,就用 display: none;
3. overflow
overflow 属性指定了如果内容溢出一个元素的边框(超过其指定高度及宽度)时,会发生什么
| 属性值 | 描述 |
|---|---|
| visible | 不剪切内容也不添加滚动条 |
| hidden | 不显示超过对象尺寸的内容,超出的部分隐藏掉 |
| scroll | 不管有没有超出内容,总是显示滚动条 |
| auto | 超出自动显示滚动条,不超出不显示滚动条 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>溢出显示隐藏overflow</title>
<style>
.peppa {
/* overflow: hidden; */
/* overflow: scroll; */
overflow: auto;
width: 200px;
height: 200px;
border: 3px solid cyan;
margin: 100px auto;
}
</style>
</head>
<body>
<div class="peppa">
小猪佩奇是一只可爱的粉色小猪,她与弟弟乔治、爸爸、妈妈快乐地住在一起。小猪佩奇最喜欢做的事情是玩游戏,打扮的漂漂亮亮,度假,以及住在小泥坑里快乐的跳上跳下。除了这些,她还喜欢到处探险,虽然有些时候会遇到一些小状况,但总可以化险为夷,而且都会带给大家意外的惊喜
</div>
</body>
</html>
一般情况下,我们都不想让溢出的内容显示出来,因为溢出的部分会影响布局
但是如果有定位的盒子,请慎用 overflow: hidden; 因为它会隐藏多余的部分
4. 综合案例
需求:鼠标经过一个大盒子,会显示出半透明的黑色遮罩,移开则不显示
遮罩的盒子不占有位置,就需要用绝对定位和 display 配合使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.test {
position: relative;
width: 630px;
height: 393px;
background-color: pink;
margin: 100px auto;
}
.test img {
width: 100%;
}
.mask {
position: absolute;
display: none;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, .4) url(../images/arr.png) no-repeat center;
}
.test:hover .mask {
display: block;
}
</style>
</head>
<body>
<div class="test">
<div class="mask"></div>
<img src="../images/bgimg.png" alt="">
</div>
</body>
</html>
效果如下
正常情况下
鼠标经过时