7. 拓展@
7.1 margin负值之美
1). 负边距+定位:水平垂直居中
咱们前面讲过, 一个绝对定位的盒子, 利用 父级盒子的 50%, 然后 往左(上) 走 自己宽度的一半 ,可以实现盒子水平垂直居中。
2). 压住盒子相邻边框
上图第一个div的右边框 与 第二个div的左边框没有重叠 1px + 1px = 2px ,所以边框线变粗
可以通过给每个div加上
margin-left: -1px;
margin-top: -1px;
让第一个div的右边框 与 第二个div的左边框完全重叠 ,这样边框的宽度还是为1px!
实现鼠标悬浮边框变成橙色:
方法一:
我们只要保证当前的这个盒子是定位就会压住标准流和浮动盒子*/
position:relative;
我们只能用相对定位它是占位置的
方法二:添加z-index:1; 实现鼠标经过某个div时,提高当前div的层级
7.2 CSS三角形之美
div {
width: 0;
height: 0;
line-height:0;
font-size: 0;
border-top: 10px solid red;
border-right: 10px solid green;
border-bottom: 10px solid blue;
border-left: 10px solid #000;
}
一张图, 你就知道 css 三角是怎么来的了, 做法如下:
- 我们用css 边框可以模拟三角效果
- 宽度高度为0
- 我们4个边框都要写, 只保留需要的边框颜色,其余的不能省略,都改为 transparent 透明就好了
- 为了照顾兼容性 低版本的浏览器,加上 font-size: 0; line-height: 0;
京东案例:
7.3 文字围绕浮动元素的巧妙运用
只需要为装有图片的元素添加float:left; 浮动,文字便会自动围绕图片来显示
7.4 行内块元素的巧妙运用
- 为父元素box添加text-align: center,则其所有的子元素(必须是行内块元素)都会实现水平居中对齐
- 在一行内显示多个行内块元素时,行内块元素之间会自然产生一个空白的间距
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>行内块元素的巧妙运用</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
.box {
text-align: center;/* 为父元素box添加text-align: center,则其所有的子元素(必须是行内块元素)都会实现水平居中对齐 */
}
.box a {
display: inline-block; /* 在一行内显示多个行内块元素时,行内块元素之间会自然产生一个空白的间距 */
width: 36px;
height: 36px;
background-color: #f7f7f7;
border: 1px solid #ccc;
text-align: center;
line-height: 36px;
text-decoration: none;
color: #333;
font-size: 14px;
}
.box .prev,
.box .next {
width: 85px;
}
.box .current,
.box .elp {
background-color: #fff;
border: none;
}
.box input {
width: 45px;
height: 36px;
border: 1px solid #ccc;
outline: none;
/* 取消选中后的边框 */
}
.box button {
width: 60px;
height: 36px;
background-color: #f7f7f7;
border: 1px solid #ccc;
}
</style>
</head>
<body>
<div class="box">
<a href="#" class="prev"><<上一页</a>
<a href="#" class="current">2</a>
<a href="#">3</a>
<a href="#">4</a>
<a href="#">5</a>
<a href="#">6</a>
<a href="#" class="elp">...</a>
<a href="#" class="next">>>下一页</a>
到第
<input type="text">
页
<button>确定</button>
</div>
</body>
</html>
7.5 CSS三角形的巧妙运用
1)效果图:
2)原理:将直角三角形用子绝父相的方法定位到红色区域的右边,并把直角三角形的颜色改为白色
实现直角三角形的方法:
1)正常的写法:
2)简写:
效果图的实现代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS三角巧妙运用</title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
.price {
width: 160px;
height: 22px;
border: 1px solid red;
margin: 0 auto;
line-height: 24px;
}
.miaosha {
position: relative;
float: left;
width: 90px;
height: 100%;
background-color: red;
text-align: center;
color: #fff;
font-weight: 700;
margin-right: 8px;
}
.miaosha i {
position: absolute;
top: 0;
right: 0;
width: 0;
height: 0;
border-color: transparent #fff transparent transparent;
border-style: solid;
border-width: 22px 10px 0 0; /* 第一个值相当于三角形的高度,第二个值相当于三角形的宽度 */
}
.origin {
font-size: 12px;
color: gray;
text-decoration: line-through; /* 设置删除线 */
}
</style>
</head>
<body>
<div class="price">
<span class="miaosha">
$1650
<i></i>
</span>
<span class="origin">$5650</span>
</div>
</body>
</html>