自实习也有几个月的时间了,以爱奇艺实习为敲门砖。进入了眼下这家公司。假设说当初能进爱奇艺是暂时袭击DIV+CSS的话,眼下在这家公司体验到。不论什么技术都必须悉知原理,这样才干做到庖丁解牛。做一个内行的人。css属性和使用方法都摆在那里,但假设用得好。除了躬身实践。提高理论积淀就特别必要了,这本《写给大家看的css书》高速扫过一遍之后,之前工作遇到过不清楚的问题,一扫而空,所以有必要总结下。

   css层叠的理解

   css是层叠样式表的英文缩写。层叠意味着样式从文档结构中一个层次传递到还有一个层次,浏览器来决定,某个标签应用来自哪个来源的样式属性。

   样式的来源有三种:默认浏览器样式表、用户样式表、设计者样式表。

   默认浏览器的样式表依据浏览器不同而不同,编写样式时。须要编写重置样式表,以便设计者样式表现统一。

   用户样式表则是用户在浏览器中进行的个性化设置

   设计者样式表则是设计者编写的。这当中又分为内联样式、嵌入样式、链接样式。内联样式和嵌入样式并没有做到样式与内容的分离。由于样式仍然包括在同一个文档中。

链接样式是唯一一种可以真正将表现样式与结构化标记分离的方式。设计者这三种样式的优先级由高到低为:内联样式、嵌入样式、链接样式。

   有了以上样式来源,层叠的工作原理:首先,找到应用每一个元素和属性的所有声明。按次序和重要性排序,次序即顺序,重要性则是属性的权重和各样式的优先级,而且先按重要性排序再按顺序排序。

   
在文档层次中对准标签

   一个选择符能够再多条规则中使用。

选择符以自右向左的标签顺序相应。上下文选择符中仅仅要标签前面选择符在文档层次中位于它上方某处,并以同样顺序出现就有效。

类和ID选择符的优点是无需考虑文档层次的样式。类和ID应该有克制的使用,常见的是加入给包括标记主要部分的块级元素,然后以响应的ID和类名开头的上下文选择符。訪问该块级元素中的标签。

   子选择符、相邻同辈选择符、属性选择符、伪类、伪元素都能为高速定位提供帮助。

规则声明

   em计算根据是一种字体中字符的宽度。ex等于给定字体中字母x高度。在PC开发中使用em指定字体大小的原因有二:能够充分利用继承性,其次。方便视力障碍者使用。

但乐帝操心重构中,改变嵌套层级easy引发连带问题,到眼下为止乐帝仍然採用像素单位。

字体和文本样式

   css产生的意义在于实现了网页结构与样式的分离。说到字体的范畴中,类似分形学,依旧有结构与样式分离的属性。

字体属性主要涉及文字的大小和外观。

文本属性则主要涉及对字体的处理,比如行高和字母间距。

   字体集合又分为衬线和无衬线两种,主要差别在于字符笔画末端。

无衬线sans-serif。更适合web设计。

   字体属性font-variant将全部字母转换成小型大写字母。

其它相关字体属性如font-weight、font-size、font-style font-family从字面上就能够看出这些均为字体属性。

   文本属性中须要理解一个概念,即css会把一个盒子放到位于元素中文本周围。

这个盒子叫文本盒子。

text-indent用于设置文本盒子相对于包括元素的相对位置。经常使用的首行缩进即此属性实现。而且text-indent属性有继承值,div中设置text-indent值。则全部段落都会继承这个text-indent值,而且段落继承缩进值是基于父元素计算之后的结果。

    letter-sapacing用于调整字母间的距离。word-spacing用于调整单词之间的距离。

    text-align设置水平方向上与包括元素对齐方式。因此必须在包括元素上设置此属性。

    line-height除了设定行距外,还有实现单行文本居中的技巧。

方法是将行高设置为包括元素高度。来实现垂直居中效果。

   
text-transform改变元素中国文本大写和小写形式。

   
vertical-align能够相对于基线将文本向上方或下方移动。比如能够构造化学表达式或者方程式。

   盒模型

    定位元素分为三部分:盒模型描写叙述标记中存在的每一个元素的定位控制。

position属性定义了这些元素在页面上的位置关系。display属性定义元素在页面上是堆叠还是并排及是否出现。

    盒模型中涉及三个概念:边框、外边距(margin)、内边距(padding)。

    边框有三个属性:宽度、样式、颜色。

边框会增大元素的尺寸。因此边框会改变布局。

    盒子内边距(padding)指盒子内容与盒子边框之间的距离。

内边距处于盒子内部,设置背景色延伸能够用内边距。

    盒子外边距(margin)设置盒子与相邻元素之间的距离。多数块级元素有默认外边距,因此须要初始化。

*{margin:0;padding:0;}

盒子外边距有折叠外边距的问题。即上下外边距相遇时。会相互折叠,直到一个元素外边距接触到另外一个元素,通俗讲即最后外边距效果是较大的外边距,而不是累加。

    盒子的大小,通过以上内边距与外边距的定义。我们知道内边距与边框属于盒子大小,而外边距不属于,通常情况下,设置元素的width是盒子内容的宽度,而不是盒子本身的宽度,假设再设置内边距和边框,盒子宽度会添加,这个须要特别注意。

   
浮动和清除

    浮动的原理:仅仅要设置了宽度的元素。并且页面有足够空间,那么对应元素就会像栏一样排列在一起。

    在非常多布局情况下。我们不想不论什么元素都向上浮动元素旁边。也就是让它保持在浮动元素下方。即

page=1">清除浮动

.clearfix:atfer{
content:".";
display:block;
visibility:hidden;
height:0;
clear:both;
} .clearfix{display:inline-block}
.clearfix{display:block}

position属性

    如上所述。position属性定义了元素在页面中的位置关系。这里要了解一个关键概念:定位环境。

定位环境就是当我们使用top、left、right、bottom时移动元素时,我们会參照另外一个元素移动它。而这个作为參照的元素就是定位环境。即相对于哪个元素移动。

   通常开发时,常常设置须要作为需定位元素祖先元素的position属性为relative,就能够使须要定位的元素改动定位环境。

    相对定位作为静态元素,所占领空间及其它元素位置都不变,即仅仅是视觉上移动,并没有脱离文档流。文档中,仍然有此元素的位置。

   
绝对定位与相对定位不同之处在于,它会把元素全然移出文档流。其它文档流的内容,会随着abosolute的设置而紧跟文档流移动。

    固定定位也是脱离文档流。仅仅只是定位环境是视口,即浏览器显示网页的窗体。

display属性

    display:none与visiblity:hidden差别在于,前者原先占领的空间都会被移除,而后者元素占领空间会得到保留,仅仅是不显示。

    display:block和inline能够依据语义化须要,来针对性的改动默认元素的display属性。

浮动布局

对带有关键宽度的元素。好的布局方法是嵌套一层内部div。别为那些构成主分栏的div直接加入视觉样式,要加入就给他们内部div加入。这也是结构与样式分形学。进一步细分。

#main_wrapper {
width:840px; /* widths of columns will change proportionately as this width is changed */
margin-left:auto; /* centers layout in browser */
margin-right:auto; /* centers layout in browser */
text-align:left; /* resets the centering hack for IE6 on the body tag */
}
#header { }
#nav {
width:22%; /* this width + content width must total 100% */
float:left; /* floats on nav and content divs make them sit side by side */
}
#content {
float:left; /* floats on nav and content divs make them sit side by side */
width:78%; /* this width + nav width must total 100% */
top:0px;
}
#footer {
clear:both; /* makes the footer sit below whichever column is longest */
}

    overflow属性用于控制元素怎样处理它们包括的内容,overflow:hidden规则可以使较窄分栏在上述情况下保持宽度不变。

之前乐帝处理图片等比例放缩就用到此属性。

两栏流动式布局

    两栏流动式布局,设置min-width和max-width属性,以使布局不会失控,同一时候给导航栏设置定宽,使内容栏动态改变宽度。

三栏布局

   三栏固定宽度布局,设置浮动同一时候设置每栏所占百分比宽度大小就可以。

   三栏流动式布局文档流及关键样式例如以下:



#threecolwrap {
float:left;
width:100%;
background:url(../../../chapter_5/code/images/3_col_faux_art_right.gif) repeat-y right;
}
#twocolwrap {
float:left;
width:100%;
display:inline; /* stops IE doubling margin on float*/
<span style="color:#ff0000;">margin-right:-170px; /* CWS - neg margin move */</span>
background: url(../../../chapter_5/code/images/3_col_faux_art_left.gif) repeat-y left;
}
#nav {
float:left;
<span style="color:#ff0000;">width:150px;</span>
display:inline; /* stops IE doubling margin on float*/
}
#content {
width:auto;
<span style="color:#ff0000;">margin-left:150px;
margin-right:170px;</span>
}
#promo {
float:left;
<span style="color:#ff0000;">width:170px;</span>
}

   通过设置#nav和#promo定宽,并设置content外边距,实现流动三列布局。

   设计界面组件

   表格:表格涉及标签语义化,加入样式的目标是尽量加入最少的视觉因素,以保证用户对数据的理解。table标签使用border-collapse能够将默认的两个单元格双边框降低到单边框。

   表单:表单须要注意的是并列排列的表单控件,从语义关系上,能够使用无序列表来实现对齐等操作。

   列表:列表也会依据浏览器不同而不同,弥补差异的方法是。将列表的外边距和内边距都重设置为0,然后又一次加入样式。

   行内元素应用内边距和边框时。不会影响包括元素,解决方法是设置display属性。

前端编程提高之旅(五)----写给大家看的css书的更多相关文章

  1. 前端编程提高之旅(三)----浏览器兼容之IE6

    在爱奇艺实习期间,乐帝主要负责移动端活动页面的制作,因为移动浏览器是随着智能手机兴起的,这就决定了移动端不会重蹈浏览器兼容问题的覆辙.一開始就比較好的支持web标准,而纵观整个互联网行业,移动web开 ...

  2. 前端编程提高之旅(六)----backbone实现todoMVC

                乐帝当年学习backbone时.最開始是看官网todoMVC的实现.后来了解到requireJS便于管理JS代码.就对官网代码做了requireJS管理.但此时乐帝感觉此时的t ...

  3. 前端编程提高之旅(十)----表单验证插件与cookie插件

        实际项目开发中与用户交互的常见手法就是採用表单的形式.取得用户注冊.登录等信息.而当用户注冊或登录后又须要记住用户的登录状态.这就涉及到经常使用的两个操作:表单验证与cookie增删查找.   ...

  4. 前端编程提高之旅(十二)----position置入值应用

    这次内推项目用到的遮罩及其页面下方button都涉及一个概念position置入值得概念.效果图例如以下: 一个元素position属性不是默认值static.那么该元素被称为定位元素. 定位的元素生 ...

  5. 《写给大家看的设计书(第3版)》【PDF】下载

    <写给大家看的设计书(第3版)>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196355 内容简介 <写给大家看的设计书&g ...

  6. PPT排版细节,写给大家看的设计书,完美总结

    原创作者:陈玓玏 相信每一位小宝贝在工作中都会被老板用PPT虐无数遍,虐到自己怀疑人生.奈何在网上随手一搜,出现的各类招聘要求都躲不开"熟练掌握PPT制作",尤其是各类科技公司.咨 ...

  7. 【写给大家看的CSS】定位元素:使用position/display布局

    引言 使用position和display来实现的当鼠标移动到图片上时显示和隐藏文字或者视频的效果. 知识点 1.relative.absolute的使用. 当子元素使用position:absolu ...

  8. HDU(4528),BFS,2013腾讯编程马拉松初赛第五场(3月25日)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4528 小明系列故事——捉迷藏 Time Limit: 500/200 MS (Java/O ...

  9. 从后端到前端之Vue(一)写个表格试试水

    目录: 1.脚本式开发. 2.工程化开发 3.工程化和脚本的区别 4.来个table试试水 4,1.目标 4.2.思路 4.3.设计与编码 4.4.效果 5.业务分离 6.功能拓展——个性化设置    ...

随机推荐

  1. 高性能MySQL(第三版)

    一.MySQL架构与历史 1.2.2 锁粒度 表锁:写锁的优先级高于读锁:写锁的请求可以插入到读锁的前面,但读锁的请求却不能插入到写锁的前面: 行级锁:行级锁只在存储引擎层实现,在服务器层没有实现: ...

  2. java 协程框架kilim

    http://phl.iteye.com/blog/2247112 http://chen-tao.github.io/2015/10/02/kilim-work-way/ 待丰富

  3. MYSQL 权限设置查询

    mysql> GRANT RELOAD, SUPER, REPLICATION SLAVE ON *.* TO 'repl'@'192.168.3.%' IDENTIFIED BY PASSWO ...

  4. CentOS使用dnf安装Redis

    1.查询可用的redis安装包 输入以下命令: dnf list redis 输出: redis.x86_64 3.2.10-2.el7 2.安装软件 输入以下命令: dnf install redi ...

  5. python linux安装anaconda

    步骤: 1.在清华大学镜像站中下载anaconda版本:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ https://mirrors.t ...

  6. [adb 命令学习篇] adb 命令总结

    https://testerhome.com/topics/2565 Android 常用 adb 命令总结 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb ...

  7. json的两种表示结构(对象和数组).。

    JSON有两种表示结构,对象和数组.对象结构以”{”大括号开始,以”}”大括号结束.中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如 ...

  8. mysql通过mysqldump实现备份,脚本编写

    每日三点同步mysql备份任务 crontab -e 0 3 * * * sh /home/shell/mysql_bakup.sh >> /dev/null 2>&1 my ...

  9. UVa——1600Patrol Robot(A*或普通BFS)

    Patrol Robot Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Descripti ...

  10. 【CCF】棋局评估

    博弈论极小极大搜索,记忆化+状压 #include<iostream> #include<cstdio> #include<string> #include< ...