CSS专题

1.布局

css盒子模型
20140415151801.jpg
.box{
    padding: 20px;
    margin: 20px;
    border:10px solid salmon;
    background: aqua;
    width: 200px;
}

box-sizing

  • border-box:为元素设定的宽度和高度决定了元素的边框盒。
  • content-box:宽度和高度分别应用到元素的内容框

2.开发准备

覆盖浏览器默认样式

*{
    margin:0;
    padding:0;
    border:0;
    font-size:100%;
    box-sizing:border-box;
}

提取公共样式

.flex{
  display:flex;
}
.flex-column{
  flex-direction:column
}
.mt-10{
 margin-top:10px;
}
...

3.居中

3.1 水平居中

文字水平居中
.text-center{
  text-align: center;
}
块水平居中
.box-center{
  margin:0 auto
}

3.2垂直居中

文字垂直居中

设置高度

<div class="vertical">
    <span>垂直居中</span>
</div>
.vertical{
  height:32px
  line-height:32px
}

不设置高度


.vertical span{
  display:inline-block;
  padding:10px
}
块垂直居中

使用定位

<div class="vertical">
    <div class="box">
        这是一个快
    </div>
</div>
.vertical{
    width: 200px;
    height: 200px;
    background: cadetblue;
    font-size: 12px;
    position: relative;
}
.vertical .box{
    height: 100px;
    width: 100px;
    background: #91c8c9;
    position: absolute;
    top: calc(50% - 50px);
    left: calc(50% - 50px);
}

transform属性

.vertical .box{
    height: 100px;
    width: 100px;
    background: #91c8c9;
    position: absolute;
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%,-50%);
    transform: translate(-50%,-50%);
}

4.伪类&伪元素

伪类

通过选择器找到那些不存在与DOM树中的信息以及不能被常规CSS选择器获取到的信息。

  • nth-child
/**常用于表格**/
p:nth-child(odd)
p:nth-child(even)
/**灵活运用**/
p:nth-child(3n) 3的倍数项
li:nth-child(n+3) 大于等于三的
  • first-child last-child
  • hover focus visited
  • not 常搭配其他伪类使用
/**常用**/
p:not(:first-child)
p:not(:nth-child(3n)
a:not([href="//www.baidu.com"])
伪元素

伪元素在DOM树中创建了一些抽象元素,这些抽象元素是不存在于文档语言里的

  • :after :before
/**清除浮动**/
.box:after{
    content: '';
    clear: both;
    display: block;
}
p:after{
 clear:both;
}
/**画三角形的应用**/
p:nth-child(1):before {
    display: block;
    content: '';
    border-width: 8px ;
    border-style: solid;
    border-color:  transparent  transparent transparent darkorange;
    position: absolute;
    left: 100%;
    top: calc(50% - 8px);
}
p:nth-child(1):after {
    display: block;
    content: '';
    border-width: 8px ;
    border-style: solid;
    border-color:  transparent  transparent transparent #fff;
    position: absolute;
    left: calc(100% - 1px);
    top: calc(50% - 8px);
}
/**图片错误处理应用**/
 <img  src="" :class="{error,error}" alt="自然风景"  onerror="error=true">
img.error {
  display: inline-block;
  transform: scale(1);
  content: '';
  color: transparent;
}
img.error::before {
  content: '';
  position: absolute;
  left: 0; top: 0;
  width: 100%; height: 100%;
  background: #f5f5f5 url(../assets/error_img.svg) no-repeat center / 50% 50%;
}
img.error::after {
  content: attr(alt);
  position: absolute;
  left: 0; bottom: 0;
  width: 100%;
  line-height: 2;
  background-color: rgba(0,0,0,.5);
  color: white;
  font-size: 12px;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  //... 略
}

5.转换

2D转换
  • translate()
    根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动。
  • rotate()
    在一个给定度数顺时针旋转的元素。负值是允许的,这样是元素逆时针旋转
  • scale()
    该元素增加或减少的大小,取决于宽度(X轴)和高度(Y轴)的参数:
  • skew()
    分别表示X轴和Y轴倾斜的角度,如果第二个参数为空,则默认为0,参数为负表示向相反方向倾斜。
  • matrix()
    matrix()方法和2D变换方法合并成一个。包含旋转,缩放,移动(平移)和倾斜功能。
3D转换
  • rotateX()
  • rotateY()

6.过渡

应用场景:元素由一种状态变为另一种状态的转变过程

// 抽屉效果
.drawer{
  height: 100%;
  width: 400px;
  background: aqua;
  border-radius: 20px 0 0 20px;
  position: absolute;
  right: 0;
  transition: all 0.4s linear;
  &.hide{
    right:-400px
  }
}
// 一些鼠标悬浮效果
button{
  width: 100px;
  height: 40px;
  line-height: 40px;
  font-size: 14px;
  border: none;
  background: white;
  transition:all 0.4s;
  &:hover{
    background: #228ab3;
    color:white;
  }
}
// 消息弹出框
.message{
  position: absolute;
  width: 300px;
  border-radius: 6px;
  background: #fff;
  color:#555;
  text-align: center;
  right: -300px;
  top:60px;
  box-shadow: 0px 4px 5px 0px #e9e9e9;
  transition: all 0.4s;
  span{
    padding: 10px;
  }
  &.show{
    right: 50px;
  }
}

7.动画

@keyframes规则创建动画:指定的变化时发生时使用%,或关键字"from"和"to",这是和0%到100%相同。0%是开头动画,100%是当动画完成。

@keyframes mymove
{
from {top:0px;}
to {top:200px;}
0%{top:0px;}
20% {top:20px;}
80% {top:180px;}
100% {top:200px;}
}

animation 调用动画

.move{
  background: aqua;
  width: 100px;
  height: 100px;
  position: absolute;
  animation: mymove 2s ease infinite  alternate;
}
// 旋转
@keyframes mymove
{
  0%{top:0px;transform:rotateX(0deg) rotateY(0deg) rotate(0deg)}
  100% {top:200px;transform: rotateX(230deg) rotateY(230deg) rotate(360deg)}
}

8.剪裁

clip-path
  // 多边形-右上、右下,左下,左上
  clip-path: polygon(50% 0,100% 100%, 0% 100%, 50% 0);
  // 圆-半径,圆心坐标
  clip-path: circle(50% at 50% 50%);
  // 椭圆-x轴半径、y轴半径、圆心坐标
  clip-path: ellipse(30% 20% at 50% 50%);
  // 矩形-距上,距右,距下,距左
  clip-path: inset(100px 50px 50px 50px);
  // 实例 inset(<top> <right> <bottom> <left> round <top-radius> <right-radius><bottom-radius> <left-radius>)
  clip-path:inset(25% 0% 25% 0% round 0% 25% 0% 25%);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,923评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,154评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,775评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,960评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,976评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,972评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,893评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,709评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,159评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,400评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,552评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,265评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,876评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,528评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,701评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,552评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,451评论 2 352

推荐阅读更多精彩内容

  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 1,745评论 0 2
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 2,314评论 0 11
  • 1、介绍一下CSS的盒子模型,低版本IE的盒子模型有什么不同?如何设置这两种模型? (1)有两种, IE 盒子模型...
    LemonnYan阅读 945评论 0 7
  • 1.1CSS 基础与选择器初识 | CSS 1. CSS 加载方式有几种? CSS样式加载一共有四种方式: 1、行...
    没糖_cristalle阅读 710评论 0 0
  • 1、介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的? 标准盒子模型:宽度=内容的宽度(cont...
    长城_changcheng阅读 909评论 0 14