神仙朱前言
闲置在家,没有工作,咸鱼到月底。加上最近在大佬的建议下搭个人博客,于是把自己的笔记整理了一下,捣鼓捣鼓,发点文章
心中的雷区
每次做项目写样式的时候,写到某些可以简写的属性,我仍然分开着去写,我当然知道简写的好处,但是我也有些害怕又去调试这种错误,有些东西又记不清楚模模糊糊,然后又需要去查,打断了我做项目的思路。 虽然是简单的东西,但是事后也不太想在这些东西上面去花时间,久而久之,像是雷区一样。
但是!!!我现在要鼓起勇气去直面内心的恐惧!!!惊乜嘢啧!!
因为要做勇士,就不能害怕黑暗,我们要主动出击
属性简写的作用
官方文档上面是这么说的
通常建议使用简写属性,而不是分别使用单个属性,因为这个属性在较老的浏览器中能够得到更好的支持,而且需要键入的字母也更少。
当你的项目中开始在项目中使用简写属性的时候,久而久之,会给你的样式文件减少很多的体积
而且更加雅观,更加整洁。 想想是不是这个道理,当我们分开写属性的时候,很多时候是没有凑在一起写的
比如 background-image 又放在 height 的前面了,background-color 又放在 font-size 的后面了
这样写来,没有整合起来,其实阅读起来会花不少时间。 而简写就不一样了,一行读起来清清楚楚,明明白白。
常用有什么属性可以简写
我查了查,常用的一些简写属性大概是这些,如果有什么补充的,可以留言告诉我
- margin、padding
- border、border-radius
- transition
- background
- font
- list-style
下面我们以一个八拍的形式来说明一下这些属性的简写用法
background
代码语言:javascript复制 /* backgroud:color image repeat attachment position origin clip / size */
background: #000 url(img/bg-cover.jpg) no-repeat scroll top left content-box border-box /100% 100%
/* 相当于 */
background-color:#000 /* 背景颜色 */
background-image: url(img/bg-cover.jpg) /* 背景图片 */
background-repeat:no-repeat /* 背景如何重复 */
background-attachment:scroll /* 背景是否可以滚动 */
background-position: top left /* 背景图片位置 */
background-origin:content-box /* 背景图片定位区域 */
background-clip:border-box /* 背景的绘制区域 */
background-size:100% 100% /* 背景图片的尺寸 */
特别说明几个问题
1、属性的顺序是否固定?
属性的顺序是不固定的,比如下面的效果都是一样的
代码语言:javascript复制 background: #000 url(img/bg-cover.jpg) no-repeat scroll border-box border-box top left/contain
background: url(img/bg-cover.jpg) no-repeat #000 border-box border-box top left/contain
background: no-repeat border-box top left border-box url(img/bg-cover.jpg) #000/contain
2、backgroud-origin 和 background-clip 在简写的位置怎么对应?
1、当简写属性时,只有一个 content-box(或者border-box) 的时候,指的是 background-clip background-origin 都是 content-box(或者border-box)
代码语言:javascript复制 /* background-origin 和 background-clip 都是 content-box */
background: #000 url(img/bg-cover.jpg) content-box ;
2、当简写属性时,有两个 content-box 的时候,第一个对应 background-origin,第二个对应 background-clip
代码语言:javascript复制 /* 第一个 content-box 指的是 background-origin,第二个border-box指的是 background-clip */
background: #000 url(img/bg-cover.jpg) content-box border-box;
PS:background-origin 和 background-clip 默认都是 border-box
3、background-size 的简写注意
1、background-size 要放在斜杠 “/“ 后面,而且必须写上 background-position,不然不起效果 ,我敢负责任地说我不确定,虽然亲测是这样的,但是不排除意外…….
代码语言:javascript复制 background: #000 url(img/bg-cover.jpg) top left/contain;
2、background-size:100% 50% == 表示宽100%,高50%
4、background-position 注意
您需要把 background-attachment 属性设置为 “fixed”,才能保证该属性在 Firefox 和 Opera 中正常工作。 来自w3cschool
顺便写一下而已,好像跟我们的简写主题不相关,但是没什么关系…….
font
代码语言:javascript复制 font: italic normal bold 12px "宋体"
/* 相当于 */
font-style:italic /* 字体样式,是斜体,还是正常什么的*/
font-variant:normal /* 字体变化, */
font-weight:bold /* 字体粗细 */
font-size:12px /* 字体大小 */
font-family:"宋体" /* 字体 */
margin、padding、border-radius
margin 和 padding 以及 border-radius 的简写顺序都是按照顺时针方向来的, 上 右 下 左
四个值,四个方向的值 不一样 的时候
代码语言:javascript复制 /* margin: margin-top margin-right margin-bottom margin-left */
marigin: 1px 2px 3px 4px
/* padding: padding-top padding-right padding-bottom padding-left */
padding: 1px 2px 3px 4px
/* border-radius: top-left top-right bottom-right bottom-left */
border-radius: 1px 2px 3px 4px
一个值,四个方向的值 一样 的时候,只用写一个值就可以了
代码语言:javascript复制
两个值,上下方向的值 一样 ,左右 一样
代码语言:javascript复制
三个值,上下方向的值 不一样 ,左右 一样
代码语言:javascript复制
border
这个一般见都是合起来写,也很少见过分开写的,除非你比较清新脱俗
代码语言:javascript复制
list-style
简写的时候,可以不设置其中的某个值,但是没有设置的属性会使用默认值
代码语言:javascript复制 /* list-style: list-style-type list-style-position list-style-image */
list-style: circle inside url('/a.gif')
/* 相当于 */
list-style-type: circle
list-style-position: inside
list-style-image: url('/a.gif')
ps:list-style-image 级别大于 list-style-type,如果存在image,不显示 type
另外,说说 list-style-position 为 inside 和 outside 的区别,看图便知 inside
outside
这个图是不是看起来有点逼死强迫症,总想把色块去掉哈哈哈
transition、animation
代码语言:javascript复制 /* transition: property duration timing-function delay */
transition: transform 10s linear 2s;
/* 相当于 */
transition-property: transform
transition-duration: 10s
transition-timing-function: linear
transition-delay: 2s
/* animation: name duration timing-function delay iteration-count direction */
animation: keyframeName 10s linear 2s 3 alternate ;
/* 相当于 */
animation-name: keyframeName /* 动画帧名称 */
animation-duration: 10s /* 动画完成时间 */
animation-timing-function: linear /* 动画过渡方式 */
animation-delay: 2s /* 动画延迟多久开始 */
animation-iteration-count: 3 /* 动画播放多少次,可以无限播放 */
animation-direction: alternate /* 动画播放方向 ,可以轮流反向播放*/
结尾
害怕的东西
去了解了,去看了,突破了心里雷区的第一关 去尝试了,举一反三了,突破了心里雷区的第二关 做笔记,是写给自己看的,可以很随便,只要自己能看懂就行 写文章,是写给别人看的,必须写清楚,就算没人看,这也算是我比较怕触碰的地方,算是我的雷区大Boos。
我会继续突破自己!!!高度不负责任,有问题自己告诉我然后自己去试试就好了