background :背景。在css里面作为css属性一成员,通过该属性可设置背景图片、背景颜色、背景图片截取等样式。而仅仅一个background又具有多个子属性。
颜色名称,如: background-color:red
十六进制背景色,如: background-color:#f00
rgb颜色,这里如果是rgba,a表示透明程度,为0全透明,为1为完全不透明,
如: background-color:rgb(255,0,0.3)
特殊值:transparent,透明色: background-color:transparent
background-image属性用于为一个元素设置一个或多个背景图片,多个背景图片之间以逗号隔开。
一张图片: background-image: url(img/a.jpg)
多张图片: background-image: url(img/a.jpg),url(img/b.jpg)
特殊值:none,不显示背景图像
background-image: none
background-repeat 属性定义背景图像的重复方式。背景图像可以沿着水平轴,垂直轴,两个轴重复,或者根本不重复。
常用的4个值:
repeat:水平和垂直方向都重复图像, background-repeat: repeat
repeat-x:水平方向重复图像
repeat-y:垂直方向重复图像
no-repeat:图像不重复
规定背景图像是否固定或者随着页面的其余部分滚动。
scroll:背景图像相对于页面不动,会随着网页的滚动而移动,默认
fixed:背景图像相对于浏览器窗口不动,内容滚动的时候背景图像不动
background-attachment: fixed
第一个值为横坐标,第二个值为纵坐标。默认值为:(0% 0%)。
如果只指定了一个值,该值将用于横坐标。纵坐标将默认为50%。
例如: background-position: right; 代表背景图右侧,垂直方向居中的位置。
百分比位置,如:background-position: 20% 20%
具体像素位置, 如:background-position: 20px 20px
background-size 设置背景图片大小。图片可以保有其原有的尺寸,或者拉伸到新的尺寸,或者在保持其原有比例的同时缩放到元素的可用空间的尺寸。
单张图片的背景大小可以使用以下三种方法中的一种来规定:
当通过宽度和高度值来设定尺寸时,你可以提供一或者两个数值:
每个值可以是<length>, 是 <percentage>, 或者 [auto] 。
示例:
为了设定超过一张以上的图片尺寸时,需要提供多项数值,它们通过逗号分隔。
CSS部分 背景图片分辨率为427*640
分别给box的background-size属性添加不同的属性值,会产生不同的效果。
1、长度 :可以用px、em、rem等指定背景图片大小,不能为负值。
background-clip 裁剪,通常和background-origin一起使用,决定设置元素的背景(背景图片或颜色)是否显示。
注:background-clip只是将背景和背景色粗暴的裁剪。
该属性有四个值
border-box
背景延伸至边框外沿(但是在边框下层)。 background-origin: border-box
background-origin 规定了指定背景图片[ background-image ] 属性的原点位置的背景相对区域.
border-box
背景图片的摆放以border区域为参考
padding-box
背景图片的摆放以padding区域为参考
content-box
背景图片的摆放以content区域为参考
样式:
先看一下background-origin属性。
先看一下background-clip属性。
这就印证了background-clip只是将背景和背景色粗暴的裁剪。
好的,以上就是我对background的各个属性的理解,实际应用时可能会有部分出入,我们只需要掌握background-color、background-image、background-repeat、background-position、background-size这几个常用的属性即可。
欢迎大家一起交流,讨论。
其实这是我在某次面试前端实习生时候遇到的一个问题,面试官说你有多少种让DOM隐藏的方法,能说多少说多少,当时脑抽,因为是“能说多少说多少”就觉得那肯定有好多,总结一下当时想出来的“偏方”。
两者不同:如果设置 display:none,将隐藏整个元素,如果设置 visibility:hidden,元素的内容将不可见,但元素仍保持原来的位置和大小。
思来想去既然是隐藏,我是不是还可以说 opacity:0,问了一下这个答案行不行,他说行,还有吗?
当然有:
设置position为position:absolute或fixed,可以通过z-index遮掩。
设置父元素为 overflow:hidden ,将想要隐藏的元素移出父元素范围。
通过css的clip属性,将DOM裁剪。
通过css的transform属性
a. transform: skew(90deg) 拉伸90度,当然不一定是90
b. transform: scale(0) 缩放到0
c. transform: rotateX(90deg) 当然角度不一定是90,也不一定是沿x轴
=。=面试完之后我就去群里边问了一下,大部分人说的答案都是 display: none和 visibility: hidden斗胆猜测一下这两个应该是面试官想要的答案。
虽然答案可能就这两个,但是我还是有用到过我的“偏方”去做隐藏元素,
我遇到的情况是,我需要为DOM元素做一个fadeout+fadein的动画,元素带有click事件,fadeout之后只是opacity为0,然后就有了 元素隐藏了之后点击事件还存在 这个bug。
当然解决方案有很多,可以通过js,也可以通过css,css可以通过延时+transform来做,也算是我的偏方吧,可能解决方案并不完美,望留言指教。
当然这只是一些自己瞎琢磨出来的方法,希望有和我一样爱闹腾的同学补充一下下,也希望大神见到后不吝指教,感激不尽。
页面实现大头贴功能,相框固定,照片可更换,类似下图。
其实我们可以拆分一下:相框.png是一张图片,金泰熙小姐姐照片.jpg是另一张图片,只要把相框.png叠在金泰熙小姐姐照片.jpg图片前面,那么就实现啦!
先上HTML结构:
相框为固定宽高,假设宽为300px,高为400px。
CSS样式如下:
那么问题来了,photo怎么居中?
试过的不成功解法:
1、把photo设为绝对定位,left:-50%,再设margin-left为负值。由于photo宽度不确定,因此margin-left具体值不确定。
2、宽度设为300px,图片变形。
3、把photo设为绝对定位,margin:auto,left:0,right:0。当box容器宽度小于photo时,该方法失效。
以上方法均无法实现居中后,想到如下可行办法:
HTML结构:
CSS样式:
给photo外加一个div容器photobox,给photobox设定一个足够宽的宽度,再将photobox相对box居中,然后再用text-align:center让photo相对于photobox居中。
photobox容器left值=(photobox容器宽 - box容器宽)/2