【经验】css
1.父元素overflow:hidden,当父元素大小减小到不容纳子元素时,会出现滚动条。
2.input的盒模型尺寸基准是content-box,它的宽度将是以width-border计算,也就是说一个设定width:100px;border:5px solid;的input,其宽度将是90px。
3.position:relative 对display:表格类是无效的。http://www.w3.org/TR/CSS21/visuren.html#choose-position 中有说明。
4.360的line-height小于font-size时,会隐藏文本行。而ff和chrome则不会隐藏。
5.当div中的元素全浮动时,div本身将不包含任何东西因此为空,所以其后的兄弟元素不会换行而是如同左浮一样靠在div的右侧。这种时候给这个div设置overflow:hidden就可以让它拥有布局。
6.display:inline的元素不会继承line-height。
7.原来元素设定position:absolute可以相对有滚动条的父元素进行fixed定位,前提是父元素没有定义position。
但是,一旦点击其中的元素,会导致元素重新定位(点击触发重绘所以重新绘制位置)。具体位置是“父元素的顶端”,情形像是父元素因滚动而往上位移了。
8.overflow:hidden可以使得元素不占据浮动元素的位置。
9.ff会默认给border使用文本颜色,样式为-moz-use-text-color
10.给ul添加inline-block可以使用verticla-align,在span上添加似乎无法使用?
11.inline-block和inline在对空格的处理上有区别,
<span>a</span><span>
a</span>
在inline中会呈现空格,在inline-block中则不会
12.兄弟元素上下边距会重合,任一方定义了display:inline-block与float,则重合取消。overflow:hidden不行。
13.父元素的其中一个子元素float,若没有其他子元素来clear:both,则这个父元素计算宽高时不会包括浮动的子元素(除非父元素float或overflow或inline-block)
所以,如果没有子元素清除浮动,则父元素最好还是使用:after{content:"."; display:block; height:0; visibility:hidden; clear:both;}生成子元素清除浮动。
14.display:inline-block疑似会让父元素获得子元素的浮动属性。
15.after伪类需要声明content:""来生成盒子
16.明明line-height等于height,为什么文字垂直总差理想的居中一点点?是不是还有点偏下?看下是否设置了box-sizing吧,height会被重计算。
17.overflow:hidden可以防止元素被浮动兄弟元素掩盖。
17.2.但是即使设置了overflow:hidden,无论哪个方向的margin还是会被浮动兄弟元素掩盖。inline-block则不会。
这个设定可能有其深意:当margin-top大于浮动兄弟元素,将把元素推到兄弟元素的下一行。
浮动换行,除了clear,还可以这么干。
18.在项目中我采用<ul>代替<table>,因为,虽然<thead>的th和<tbody>里对应的td能够自动调节成两者间的最大宽度,但宽度会被文字撑开导致width属性无效,即使设置了overflow:hidden也没用。
18.1.要解决文字撑开问题,可以在th和td里添加p,给p设置宽度,就可以限定内容的宽度了。
18.2.如果要给<thead>和<tbody>里的p设置宽度,那何必使用<table>,使用<ul>就好。
18.3.使用<ul>代替,关键点是.title和.list里的li.col是一一相应的,基于这点认识设计图,写html就会顺利。
19.对于block元素,当其宽度根据父元素计算时(父元素的宽度不依赖本元素),设置width:auto,设置负margin-left,可以拉长宽度。(水平上,正值margin则会减少宽度,负值margin当然会增加宽度)
19.1.当父元素宽度依赖本元素计算时,水平上,正margin会扩充父元素,负margin会缩短父元素。
20.元素首先按照自身计算box-width,再按照父元素计算,再按子元素计算。已经计算就不会再考虑后面的因素。
20.1.元素不会【直接】根据兄弟元素计算宽度。因为,能根据兄弟元素计算宽度的前提条件是:两者同在文档流的一行。要同行显示,元素得设置float/inline-block/inline。但这些都会使得元素会根据自身计算宽度。
20.2.元素可以间接通过父元素,根据兄弟元素计算宽度。元素依赖父元素,父元素依赖兄弟元素。
21.inline-block/inline的负margin-right会影响到下一行的兄弟元素的定位。
22.文字超出显示省略号
overflow: hidden;
text-overflow: ellipsis;
word-break: keep-all;
white-space: nowrap;/*这句的作用是使得文字溢出也不换行。这会对其中的浮动元素产生影响,起码对右浮元素有影响*/
23.inline-block+vertical-align:middle 疑似= float:left
24.
<ul>
<li><i></i></li>
<li></li>
</ul>
<li>左浮且overflow:hidden,<i>右浮,且设置white-space: nowrap;,按理li应该可以包含i。
但由于white-space: nowrap;会换行显示(但应该恰恰相反啊)
25.我有点明白为什么有时候字体垂直居中对齐会偏下了,可能是我设置了line-height,又因为文字或空格分成了两行。
26.有时设为inline-block的子元素,相对父元素上边会偏下一点点,可能是因为它们继承了父元素的line-height,而父元素的line-heigth与height相等。重设子元素line-height即可。
27.元素的默认样式优先似乎高于继承。
28.inline-block元素里面放图片,如果发现元素像是有下内边距似的,可以设置元素line-height:0解决。
29.<div.pull-left /><div.overflow />
.overflow设置margin-left:-1px,并不会它本身左移。给.pull-left设置margin-right:-1px就能实现理想的效果。
30.我终于明白为什么有的inline-block元素不能跟兄弟img或者i垂直对齐了,因为它们设置了垂直margin,这个也会影响垂直对齐
31.overflow:hidden有不让元素与浮动兄弟元素重合的功能,display:inline-block更有不让垂直margin重合的功能。
32.text-align:center如同text-align:left一样,会被兄弟浮动元素影响,其对齐位置为(父元素width-浮动元素width)/2 + 浮动元素width
33.我第一次知道bold和bolder的区别。bolder是相对父元素继承值"更粗",而bold大概是等于800,所以bold总大于等于bolder
34.first-child可能是选取父元素的第一个元素,而元素集的第一个。
35.<br />也会继承line-height而获得高度,所以用br来换行时要注意。
36.父容器固定高度,内有一子容器固定高度,其下方有另一子容器设置overflow:auto期望自适应滚动条。问题是,第二个子容器的高度如何自适应,如何使它不设置固定高度也能实现滚动条的自适应?
可以给父容器设定overflow:hidden,给它设定height:100%。【当父容器设置overflow:hidden,子容器设置overflow:auto,不仅子容器的内容溢出子容器时子容器会出现滚动条,子容器本身溢出父容器时也会出现滚动条】
37.chrome的input被focus会有蓝色边框,可以添加outline:none处理。
38.给body设置overflow:hidden,若内容溢出时点击鼠标中键仍可以进行滚动。还要给html设置才行。
39.padding-top,padding-bottom,margin-top,margin-bottom等,当按百分比设定它们时,依据的也是父容器的宽度,而不是高度。
http://www.webhek.com/vertical-percentages-are-relative-to-container-width-not-height
40.absolute的body的子元素,设定height:100%,其高度会跟随浏览器窗口高度而变化,而不是根据body的height。
原因是body未设置position:relative,导致子元素根据html定位。
41.hover时设置的background只在hover后开始加载
42.line-height固定的inline-block容器内文字换行,可能不会撑起容器的高度导致容器的高度只有line-height值。可设置height:auto避免。
43.两行才显示省略号,只用css的完美实现:
<div style="height: 26px;line-height:12px;width: 8em;font-size:12px;position: relative;overflow: hidden;">
<p style="display: inline-block;width: 8em;height:12px;line-height: 12px;overflow: hidden;">一二三四五六七八九十九八七六五四三二一</p>
<p class="ellipsis" style="margin-left:-8em;width:16em;text-overflow: ellipsis;white-space: nowrap;word-break: break-all;overflow: hidden;">一二三四五六七八九十九八七六五四三二一</p>
</div>
44.要一个框不使用px为单位,实现水平居中。
对这个框设定position:absolute;left:50%;display:inline-block//可能也不用inline-block
对其子元素设定position:relative;left:-50%;
(其实只是这个框的子元素实现水平居中)
44.1 有个有趣的地方是,如果子元素使用margin代替position。则父元素在垂直上会失去高度,而在水平上则不会
44.2 缺点在于,父元素不可避免地拥有布局,在页面拉小时会出现滚动条。
我最终使用了父元素宽度100%,height设定为子元素高度;子元素设定固定高度,设置margin: 0 auto以居中对齐的方式实现水平对齐;
可能垂直对齐会设定父元素height等同body,设定line-height等同高度来实现。
45.控制台中的盒模型计算有个细节,使用百分比line-height决定高度时盒子的height会是整数,而使用百分比height时盒子的height会带小数。
46.垂直的margin真的是根据width来计算的。是根据父元素的width计算的。
47.遇到了input中focus字体就上升的问题,把height和line-height设为等高就可以了。
47.1出现input两者不等高的原因,就我来说,可能是.input-box设定了border-box;然后将input的height设100%,将input的line-height设为等同.input-box的height——这点会因为差了边框的高度而使得line-height比height要低。
这种模型中不必要给.input-box设定border-box,给它设定width:auto就可以了。
48.a会继承line-height,但不会使用到高度计算;而float的a会根据继承到的line-height计算高度。
48.1 其实也不奇怪,毕竟p在有行高时会根据行高计算高度。a设定float就会成为块元素。
49.默认的vertical-align是baseline吧,这个跟兄弟元素各自的line-height有关。
50.如果容器中没有文本,vertical-align就不会起效,即使设置的是bottom
51.给span加line-height,在firebug中的探查器里不会反映到高度上。
52.html的width是窗口的宽度,而其高度是取决于子元素与窗口高度无关。
所以当子元素宽度比窗口大时会出现横向滚动条,html中设置了width:100%的,都会在右侧出现空白。
而设置了height:100%的html的子元素,其高度有可能不会充满屏幕。
52.1 出现滚动条的原因是document大于视口
52.1 $(document).width()是包括滚动的横向宽度
52.2 水平空白解决方案:
var document_elem = $(document),
oldDocWidth = document_elem.width();
var elem = 子元素
$(window).on('resize', function() {
var document_width = document_elem.width();
if(oldDocWidth != document_width){
elem.css('width', '100%');
}
else {
elem.width(document_width);
}
oldDocWidth = document_width;
})
53.父元素只设置font-size,其子元素设置height:100%是无法与父元素等高的,父元素至少要设置line-height
54.让子元素决定父元素盒子,可能是一种不好扩展的做法。
55.我发现一个有趣的现象,当<a>宽度不足时使得其中文字垂直显示,形如:
<a>
<i inline-block>(用于显示图标)
在
线
客
服
</a>
此时不会有什么问题,<a>会正确根据<i>的高度计算其自身高度;如果把<i>换成<img>,则<a>计算高度时会有偏差,根据观察,如同它认为<img>的高度只有1em。
要避免这个问题,解决方案是为<a>设置display:block/inline-block
56.9px宽高,边框宽为1的盒子,设置border-radius:5px才是准确的圆。
57.绝对定位的元素会掩盖兄弟元素,即使在文档流中它处于兄弟元素的前面。这时要给兄弟元素添加相对定位。
58.绝对定位百分比宽高,会基于定位所基的父元素而而不是直接父容器。
59.透明度代码
http://blog.csdn.net/freshlover/article/details/17143341
-webkit-opacity: 0.5;
/* Netscape and Older than Firefox 0.9 */
-moz-opacity: 0.5;
/* Safari 1.x (pre WebKit!) 老式khtml内核的Safari浏览器*/
-khtml-opacity: 0.5;
/* IE9 + etc...modern browsers */
opacity: .5;
/* IE 4-9 */
filter:alpha(opacity=50);
/*This works in IE 8 & 9 too*/
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
/*IE4-IE9*/
filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
60.overflow:hidden确实会清除浮动,但是有时候不能设置overflow:hidden或者display:inline-block,这时候需要用
.clear-fix::after {
clear: both;
content: ".";
display: block;
height: 0;
visibility: hidden;
}
61.清除浮动或否是很重要的,不能盲目清除。因为清浮动会扩展父元素的布局,父元素的box会因此增大一个区域,占据空间;不清浮动,父元素的box范围会缩小,box宽高为0时甚至自身无法触发点击事件,其上的点击事件统统由子元素冒泡得来。
总之,清除浮动会让父元素在保持box为方形的条件下扩展自身box,使box恰好地包含浮动元素。
62.inline-block元素中间插入br或者div以断行,会在中间产生间距,需要设置vertical-align:top;以消除。
63.top:100%;好像会导致子元素上边与父元素下边重合。需加margin-top
64.width设置负数,如同不设置width
65.垂直居中的方法还有top:0;bottom:0;margin-top:auto;margin-bottom:auto;
66.letter-spacing会在最后一个字符右侧产生一个空白间距。对text-align的文字,这样会导致无法居中对齐;可以使用text-indent设置同样值实现居中对齐。
67.父元素绝对定位,设定padding,子元素设inline-block有宽高,这时父元素内实现部高度可能为双倍子元素高度。为父元素设置行高可解。
68.inline-block元素会被添加行高
69.letter-spacing配合text-indent可以实现字符中间产生间距并居中对齐
70.当inline-block子元素因过长换行时,父元素即使是inline-block也会扩展为其父元素的宽度,而不是子元素所占水平空间的宽度。
【经验】css的更多相关文章
- Web前端基础——CSS
一.CSS概述 css ( cascading style sheets ) 层叠样式表,可以轻松设置网页元素的显示.位置和格式外,甚至还能产生滤镜,图像 淡化,网页淡入淡出的渐变效果,简而言之,cs ...
- css的flex布局调试
学习经验-css的flex布局 今天遇到一个小问题 在给三个div布局时,设置父元素display:flex 此时三个div的宽度均为50%,他们并没有超出屏幕的宽度,还是撑满了父元素. 为什么呢? ...
- Matplotlib数据可视化(3):文本与轴
在一幅图表中,文本.坐标轴和图像的是信息传递的核心,对着三者的设置是作图这最为关心的内容,在上一篇博客中虽然列举了一些设置方法,但没有进行深入介绍,本文以围绕如何对文本和坐标轴进行设置展开(对图像 ...
- 【经验】在CSS中定义超链接样式a:link、a:visited、a:hover、a:active的顺序
以前用CSS一直没有遇到过这个问题,在最近给一个本科同学做的项目里面.出现一些问题,搜索引擎查了一些网站和资料,发现很多人问到这个问题,给出的结果我试了试,大部分都不正确. 给出我试的顺序,可能会对大 ...
- 经验分享:多屏复杂动画CSS技巧三则
当下CSS3应用已经相当广泛,其中重要成员之一就是CSS3动画.并且,随着CSS动画的逐渐深入与普及,更复杂与细腻的动画场景也如雨后春笋般破土而出.例如上个月做的「企业QQ-新年祝福」活动: 感谢sh ...
- JS控制css float属性的用法经验总结
JavaScript与CSS属性的控制网上很常见,因此来说用js操作css属性是有一定规律的. 1.对于没有中划线的css属性一般直接使用style.属性名即可. 如:obj.style.margin ...
- (转)div+css 布局经验 - 最简单的 = 最不变形的(原创技巧)
站酷几年了 一直饱受其恩泽 尤为感激 一直想奉献些什么 但是苦于水平 苦于奔波 今天静下心来 为大家奉献下 自己的div+css 经验 ,以下观点只代表 深海个人立场 希望为初学者提供一条" ...
- 【经验】在CSS中定义a:link、a:visited、a:hover、a:active顺序
摘自:http://www.qianyunlai.com/post-2.html 以前用CSS一直没有遇到过这个问题,在最近给一个本科同学做的项目里面.出现一些问题,搜索引擎查了一些网站和资料 ...
- html css 前端基础 学习方法及经验分享
前言: 入园第一天,想分享一点儿前端基础html css 的学习方法和一些经验给热爱前端,但是不知道从哪儿开始,依旧有些迷茫的新手朋友们.当然,适合每个人的学习方式不同,以下所讲的仅供参考. 一.关于 ...
- css之其它技巧和经验列表
其它技巧和经验列表(*以下实例默认运行环境都为Standard mode): 如何让层在falsh上显示? 方法: ``` 设置flash的wmode值为transparent或opaque ``` ...
随机推荐
- windows批处理實例
實例: 假設我們有個資料夾為d:\tmp和e:\tmp ,而我們只要將d:\tmp中有異動的檔案複製到e:\tmp下的話,用法如下 xcopy d:\tmp\. e:\tmp\ /D /S /Y 實例 ...
- 前端制作篇之meta标签篇
移动端前端制作有些地方不同于互联网,这篇主要讨论的是meta标签.meta标签位于之间.是主要辅助HTML结构层的.meta标签不管在互联网前端还是在移动端都起了很重要的作用.这里只讨论移动端. 附上 ...
- swift 启动图片的设置
1 .找到Assets.xcassets 2. 在Assets.xcassets里创建 New LaunchImage 拖入相应的图片 3.选中你的项目,点击General 在App Icons an ...
- HDU-1020-Encoding(水题,但题目意思容易搞错,英语的问题)
题目链接 http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?pid=1000&ojid=0&cid=7996&h ...
- jQuery表单对象属性过滤选择器
jQuery表单对象属性过滤选择器 <div id="p1" attr="p1"> <input type="text" ...
- 将SWF文件用作资源打包
使用Flash开发网页游戏少不了与各种美术资源打交道.对于静态资源的那就是各种图片,对于会动的资源可以考虑直接做成swf.制作成swf的美术资源又可以分为两种:一种是直接将关键帧罗列在主时间轴上,那么 ...
- Spring集合配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://ww ...
- SDWebImage源码解读之SDWebImageManager
第九篇 前言 SDWebImageManager是SDWebImage中最核心的类了,但是源代码确是非常简单的.之所以能做到这一点,都归功于功能的良好分类. 有了SDWebImageManager这个 ...
- 每日一练之自适应中值滤波器(基于OpenCV实现)
本文主要介绍了自适应的中值滤波器,并基于OpenCV实现了该滤波器,并且将自适应的中值滤波器和常规的中值滤波器对不同概率的椒盐噪声的过滤效果进行了对比.最后,对中值滤波器的优缺点了进行了总结. 空间滤 ...
- java_db常见错误总结
1.java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符 在拼写seq时是否存在存在特殊字符,如:常见语句后面添加了;2.ORA-01722:无效数字解决 ...