-
Notifications
You must be signed in to change notification settings - Fork 0
css3
属性选择
E[attr]:只使用属性名,但没有确定任何属性值;
E[attr="value"]:指定属性名,并指定了该属性的属性值;
E[attr~="value"]:指定属性名,并且具有属性值,此属性值是一个词列表,并且以空格隔开,其中词列表中包含了一个value词,而且等号前面的“〜”不能不写;
E[attr^="value"]:指定了属性名,并且有属性值,属性值是以value开头的;
E[attr$="value"]:指定了属性名,并且有属性值,而且属性值是以value结束的;
E[attr*="value"]:指定了属性名,并且有属性值,而且属值中包含了value;
E[attr|="value"]:指定了属性名,并且属性值是value或者以“value-”开头的值(比如说zh-cn);
结构性选择
为了方便记忆和查询,把CSS的结构伪类选择器归为四类:
1)通用子元素过滤器:E:nth-child(n)(顺序过滤)和E:nth-last-child(n)(逆序过滤)
2)通用子类型元素过滤器:E:nth-of-type(顺序过滤)和E:nth-last-of-type(n)(逆序过滤)
3)特定位置的子元素:E:first-child,E:last-child,E:first-of-type,E:last-of-type
4)特定状态的元素:E:root(根节点)、E:only-child(独子元素)、E:only-of-type(独子类型元素)和E:empty(孤节点)
CSS中有如下四种伪元素选择器:
1)first-line:为某个元素的第一行文字使用样式;
2)first-letter:为某个元素中的文字的首字母或第一个字使用样式;
文本选中伪类:selection,注意要在标签后用双冒号。如:p::selection
3)before:在某个元素之前插入一些内容;
4)after: 在某个元素之后插入一些内容;
UI元素状态伪类
我们把":enabled",":disabled",":checked"伪类称为UI元素状态伪类,这些主要是针对于HTML中的Form元素操作,最常见的比如我们"type="text"有enable和disabled两种状态,前者为可写状态后者为不可状态;另外"type="radio"和"type="checkbox""有"checked"和"unchecked"两种状态。来看两个实例,比如说你想将"disabled"的文本框与别的文本框区别出来,你就可以这样应用
input[type="text"]:disabled {border:1px solid #999;background-color: #fefefe;}
这样一来就把页面中禁用的文本框应用了一个不同的样式。那么对于其他几个用法是一样的,这里就不在讲述。IE6-8不支持":checked",":enabled",":disabled"这三种选择器。
#文字样式
text-shadow设置文字阴影,可以设置多层。
文字描边-webkit-text-stroke
media响应式设计
border-radius设置圆角。各个圆角的单独设置。
绘制椭圆:
border-radius:100px/150px
前面是x轴半径,后面是y轴半径。
transform里的ratate、skew、scale和trantranslate属性,都是由matrix(a,b,c,d,e,f) 矩阵函数来实现的。注意IE上使用矩阵函数和Google的不一样。
参考文献:https://segmentfault.com/a/1190000009636727
https://developer.mozilla.org/en-US/docs/Web/CSS/display
none:隐藏对象。与visibility属性的hidden值不同,其不为被隐藏的对象保留其物理空间
inline:指定对象为内联元素。
block:指定对象为块元素。
list-item:指定对象为列表项目。
inline-block:指定对象为内联块元素。(CSS2)
table:指定对象作为块元素级的表格。类同于html标签<table>(CSS2)
inline-table:指定对象作为内联元素级的表格。类同于html标签<table>(CSS2)
table-caption:指定对象作为表格标题。类同于html标签<caption>(CSS2)
table-cell:指定对象作为表格单元格。类同于html标签<td>(CSS2)
table-row:指定对象作为表格行。类同于html标签<tr>(CSS2)
table-row-group:指定对象作为表格行组。类同于html标签<tbody>(CSS2)
table-column:指定对象作为表格列。类同于html标签<col>(CSS2)
table-column-group:指定对象作为表格列组显示。类同于html标签<colgroup>(CSS2)
table-header-group:指定对象作为表格标题组。类同于html标签<thead>(CSS2)
table-footer-group:指定对象作为表格脚注组。类同于html标签<tfoot>(CSS2)
run-in:根据上下文决定对象是内联对象还是块级对象。(CSS3)
box:将对象作为弹性伸缩盒显示。(伸缩盒最老版本)(CSS3)
inline-box:将对象作为内联块级弹性伸缩盒显示。(伸缩盒最老版本)(CSS3)
flexbox:将对象作为弹性伸缩盒显示。(伸缩盒过渡版本)(CSS3)
inline-flexbox:将对象作为内联块级弹性伸缩盒显示。(伸缩盒过渡版本)(CSS3)
flex:将对象作为弹性伸缩盒显示。(伸缩盒最新版本)(CSS3)
inline-flex:将对象作为内联块级弹性伸缩盒显示。(伸缩盒最新版本)(CSS3)
grid;
inline-grid;
ruby;
ruby-base;
ruby-text;
ruby-base-container;
ruby-text-container;
contents;
run-in;
inherit;
initial;
unset;
inline也是 CSS 1 提出的属性,它主要用来设置行内元素属性,设置了该属性之后设置高度、宽度都无效,同时text-align属性设置也无效,但是设置了line-height会让inline元素居中
练习https://segmentfault.com/a/1190000009636727里的inline的例子。
此属性默认会把元素作为列表显示,要完全模仿列表的话还需要加上 list-style-position,list-style-type
练习https://segmentfault.com/a/1190000009636727里的list-item的例子。
css3的新特性弹性布局,曾经为了给几个块级元素并列在一行上,我就是用浮动来设置。如:
<div class="tab">
<div class="" style="width: 33%;float: left;text-align: center">商品</div>
<div class="" style="width: 33%;float: left;text-align: center">评价</div>
<div class="" style="width: 33%;float: left;text-align: center">商家</div>
</div>其实这样有弊端,就是永远不会是100%,如果做的细致,就需要不断的调,看效果。现在我们可以用新的布局。如:
<div class="tab">
<div class="tab-item">商品</div>
<div class="tab-item">评价</div>
<div class="tab-item">商家</div>
</div>
.tab{
display: flex;
height: 40px;
line-height: 40px;
}
.tab-item{
flex: 1;
text-align: center;
}- flex 是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。
- flex-grow 项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
- flex-shrink 项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
- flex-basis 在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。
其他的参考:https://www.cnblogs.com/xuyuntao/articles/6391728.html
父元素DIV里包含几个float的元素的子DIV,父元素的DIV的高度,不是几个子元素div高度的和。
<div>
<div style="width: 300px;height: 300px;float: left"></div>
<div style="width: 500px;height: 500px;float: right"></div>
</div>这样父元素的高度肯定是不能覆盖子元素的高度的,需要再父元素设置overflow:hidden样式。例如:
<div style="overflow: hidden">
<div style="width: 300px;height: 300px;float: left"></div>
<div style="width: 500px;height: 500px;float: right"></div>
</div>overflow:hidden属性相当于是让父级紧贴内容,这样即可紧贴其对象内内容(包括使用float的div盒子),从而实现了清除浮动。
<style type="text/css">
.left-div{
border: 1px solid red;
width: 50px;
height: 100px;
display: inline-block;
}
.right-div{
border: 1px solid;
height: 100px;
display: inline-block;
}
</style>
<body>
<div>
<div class="left-div"></div>
<div class="right-div">
<div>
<span>test</span>
</div>
</div>
</div>显示结果:
这时应该给right-div加vertical-align: top;就可以,当初我一直想着给父div加。
- Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示, 可通过加入 CSS 属性 -webkit-text-size-adjust: none; 解决.
- justify-content 用于设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式
具体使用可以参考justify-content - animation
参考css动画-animation各个属性详解
/*
animation: name duration timing-function delay iteration-count direction fill-mode play-state;
参数顺序解释
animation:指定要绑定到选择器的关键帧的名称 动画指定需要多少秒或毫秒完成 设置动画将如何完成一个周期 设置动画在启动前的延迟间隔 定义动画的播放次数 指定是否应该轮流反向播放动画 规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式 指定动画是否正在运行或已暂停
对动画说明:
关键帧的名称bottom-top 动画2s infinite循环播放 动画低速进和出 启动前延迟间隔0s
*/
.Loader .Bar:nth-child(0) { left: -15px; -webkit-animation: bottom-top 2s infinite ease-in-out 0s; animation: bottom-top 2s infinite ease-in-out 0s; }
@-webkit-keyframes bottom-top {
0% { height: 0; opacity: 0; }
50% { height: 30px; opacity: 1; }
100% { height: 0; opacity: 0; }
}- z-index属性无效
参考z-index不起作用的大坑
z-index不起作用的三种情况:
1、父标签 position属性为relative;
2、问题标签无position属性(不包括static);
3、问题标签含有浮动(float)属性。(我的问题就是标签下的子标签有些是float的)
在公众号中,有些页面会时不时地可以左右拉动,刚开始以为是bootstrap地row样式影响了(因为row样式的margin左右是-15),之前有些页面的将margin设为0,解决过类似的问题。今天发现并不是这个问题,有一方面的问题更可疑,那就是内容撑破容器,没有换行。需要给内容过多地方添加自动换行的属性word-wrap: break-word;
.row {
margin-right: -15px;
margin-left: -15px;
}