一个网站,从看起来还可以,到看起来非常棒,差别在于细节。在实现了页面里 某个组件的布局并写完样式之后,不要急着继续,有意识地训练自己,以挑剔的眼光审视刚刚完成的代码。如果增加或者减少一点内边距是不是看起来更好。调一下颜色是不是效果更好,如果在开发设计师详细的视觉稿,实现效果有没有做到完美还原。

  接下来我们讲细节。按钮使用了背景渐变和投影的话,就会有种立体感。还有一种设计大家使用扁平化设计。扁平化设计讲究色彩明快统一,外观简洁明了,意味着少用渐变,阴影和圆角。我们还是讲点基础东西吧

  基础选择器由 4 种。tagname,类型或者标签选择器。它的优先级是 0,0,1 例如 p h1 strong。.class 类选择器。该选择器匹配 class 属性中有指定类名的元素。它的优先级是 0,1,0.#id id 选择器。该选择器匹配拥有指定 id 属性的元素。它的优先级是 1,0,0.*通用选择器。该选择器匹配所有元素。它的优先级是 0,0,0.组合器将多个基础选择器连接起来组成一个复杂选择器。例如.nav-menu li 选择器种,两个基础选择器之间的空格被称作后代组合器。它表示目标元素 li 是一个拥有 nav-menu 类的元素的后代。不过还存在其他几个组合器,它们分别代表了元素的某种特定关系。

  子组合器> 匹配的目标元素是其他元素是其他元素的直系后代。例如.parent>.child。相邻兄弟组合器+匹配的目标元素紧跟在去他元素的后面。例如:p + h2。通用兄弟选择器~匹配所有跟随在指定元素之后的兄弟元素。注意,它不会选中目标之前的目标元素。例如 li.actvie ~li。多个基础选择器可以连起来(不使用空格或者其他组合器)组成一个复合选择器。复合选择器选中的元素将匹配其全部基础选择器。例如.dropdown.is-active 能够选中div class="dropdown is-active"/div,但是无法选中div class="dropdown"/div

  伪类选择器用于选中处于某个特定状态的元素。伪类选择器始终以一个冒号开始。优先级等于一个类选择器:first-child匹配的元素是其父元素的第一个子元素。:last-child匹配的元素是其父元素的最后一个子元素。:only-child匹配的元素是其父元素的唯一一个子元素。没有兄弟元素。:nth-child(an+b)匹配的元素在兄弟元素中间有特定的位置。公式an+b可以从0带入。:ntn-last-child(an+b)类似nth-child(),但不是从一个元素往后数,而是从最后一个元素从前数。:first-of-type类似于:first-child,但不是根据在全部子元素中的位置查找元素,而是根据拥有相同标签名的子元素中的数字顺序查找第一个元素。:last-of-type匹配美中类型的最后一个子元素。:only-of-type该选择器匹配的元素是满足该类型的唯一一个子元素。:nth-of-type(an+b)根据元素在特定类型下的数字顺序以及特定公式选择元素。:nth-last-of-type(an+b)根据元素类型以及特定公式选择元素,从其中最后一个元素往前算,类似:nth-last-chid。:not(selector)匹配的元素不匹配括号内的选择器。括号内的选择器必须是基础选择器。它只能指定元素本身,无法用于排除祖先元素,同时不允许包含另一个排除选择器。:empty匹配的元素必须没有子元素。如果元素包含空格就无法由该选择器匹配,因为空格在dom中属于文本节点。:focus匹配鼠标点击,触摸屏幕或者按tab键导航而获得焦点的元素。:hover匹配鼠标指针正悬停在其上方的元素。:root匹配文档根元素。:disabled匹配已禁用的元素。:enabled匹配已启用的元素,即那些能够被激活或者接受焦点的元素。:checked匹配已经针对选定的复选框,单选按钮或者选择框选项。:invalid根据输入类型中定义,匹配有非法输入值的元素。例如input type="email",值不是一个合法的邮箱地址时。:valid匹配有合法值的元素。:required匹配设置了required属性的元素。:optional匹配没有设置required属性的元素。

  伪元素类似于伪类,但是它不匹配特定状态的元素,俄式匹配在文档中没有直接对应html元素的特定部分。这些选择器以双冒号开头,不多数浏览器也支持单冒号的语法以便向后兼容。伪元素选择器的优先级与类型选择器(0,0,1)相等。:before创建一个伪元素,使其成为匹配元素的第一个子元素。该元素默认是行内元素,可用于插入文字,图片或其他形状。必须指定content属性才能让元素出现.:after创建一个伪元素,使其成为匹配元素的最后一个子元素。:first-letter用于匹配元素的第一个文本字符的样式。:first-line用于指定元素的第一行文本的样式。:selection用于指定用户使用鼠标高亮选择的任意文本的样式。

  属性选择器用于根据html属性匹配元素。其优先级与一个类选择器(0,1,0)相等。[attr]匹配的元素拥有指定属性attr,无论属性值是什么,例如:input[disabled].[attr='value']匹配的元素拥有指定属性attr,且属性值等于指定的字符串值,例如input[type='radio'].[attr='value']开头属性选择器。该选择器匹配的元素拥有指定属性attr,且属性值的开头是指定的字符串值,例如:a[href='https'].[attr='value']结尾属性选择器。该选择器匹配的元素拥有指定属性attr,且属性值的结尾是指定的字符串值,例如:a[href=′value′]结尾属性选择器。该选择器匹配的元素拥有指定属性attr,且属性值的结尾是指定的字符串值,例如:a[href='.pdf']。[attr*='value']包含属性选择器。该选择器匹配的元素拥有指定属性attr,且属性包含指定的字符串值,例如:[class*='sprite-'].[attr~='value']空格分隔的列表属性选择器。该选择器匹配的元素拥有指定属性attr,且属性值是一个分隔的值列表。列表中的某个值等于指定的字符串。如a[rel='author'].上述属性选择器都是区分大小写的。(完)

深入理解css 笔记(完)的更多相关文章

  1. 理解CSS

    写在前面的话:对于web开发,html完成网页的structure,css完成网页的presentation,js完成网页的behavior,今天就来说一说css,通过理解一些css的基础概念,能够更 ...

  2. 深入理解CSS中的层叠上下文和层叠顺序(转)

    by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=5115 零.世间的道 ...

  3. 如何理解CSS中的浮动 :其实他就像乘坐扶梯一样

    只要你用过自动扶梯,你就能很快的理解CSS中的浮动(Float). 你肯定遇到过这样的情况:       做好了,你想用CSS浮动来调整元素间的位置关系. 在写完代码之后,你发现浮动元素没出现在你设想 ...

  4. 深入理解css BFC 模型

    如果要深入理解css布局的各种原理,要在重构页面做得心应手的话,那么你就必须先理解这玩意 "BFC" , BlockFormatting Context(块级格式化上下文): 这里 ...

  5. 深入理解CSS溢出overflow & overflow:hidden真的失效了吗[转载]

    深入理解CSS溢出overflow http://www.cnblogs.com/xiaohuochai/p/5289653.html overflow:hidden真的失效了吗 http://www ...

  6. 深入理解css中的margin属性

    深入理解css中的margin属性 之前我一直认为margin属性是一个非常简单的属性,但是最近做项目时遇到了一些问题,才发现margin属性还是有一些“坑”的,下面我会介绍margin的基本知识以及 ...

  7. 深入理解css中position属性及z-index属性

    深入理解css中position属性及z-index属性 在网页设计中,position属性的使用是非常重要的.有时如果不能认识清楚这个属性,将会给我们带来很多意想不到的困难. position属性共 ...

  8. 深入理解CSS中的层叠上下文和层叠顺序

    零.世间的道理都是想通的 在这个世界上,凡事都有个先后顺序,凡物都有个论资排辈.比方说食堂排队打饭,对吧,讲求先到先得,总不可能一拥而上.再比如说话语权,老婆的话永远是对的,领导的话永远是对的. 在C ...

  9. 理解CSS居中

    我想很多在前端学习或者开发过程中,肯定会遇到如何让你的元素居中的问题,网上google肯定会有很多的解决方法.今天我就个人的项目与学习经验谈谈个人理解css如何让元素居中. 要理解css的居中,首先必 ...

  10. <转>HTML+CSS总结/深入理解CSS盒子模型

    原文地址:http://www.chinaz.com/design/2010/1229/151993.shtml 前言:前阵子在做一个项目时,在页面布局方面遇到了一点小问题,于是上stackoverf ...

随机推荐

  1. windows 服务 包装模板

    github地址:  https://github.com/xl711436/Xiaolei.MockService 在 MockServiceInstance.cs 中 对应的方法中添加 对应的逻辑 ...

  2. javax.naming.NameNotFoundException: Name [aa.bb.cc/xx] is not bound in this Context. Unable to find [aa.bb.cc]

    今天尝试把一个SpringBoot项目由jdk11转移为jdk8,在IDEA里运行一切正常.打包,部署到tomcat启动后,在客户端调用WebSocket出现如下异常: java.lang.Illeg ...

  3. constexpr和const

    const表示一个变量的值不能改变,这个值可以使运行期间得到的const int sz = get_size(); constexpr是提示编译器,该值可以在编译期间就计算出来,并进行替换,不用等到运 ...

  4. cv::inRange

    // 简单实现 cv::namedWindow("Example 2-3", cv::WINDOW_AUTOSIZE); cv::VideoCapture cap; cap.ope ...

  5. pgsql 查询结果转换为json数组

    select array_to_json(array_agg(row_to_json(t))) from (SELECT * FROM test) t

  6. java8 检查

    // 检查放款日期 boolean allMatch = cdiscountMonthBillDetails.stream().map(CdiscountMonthBillDetail::getTra ...

  7. react 富文本编辑器

    5大富文本编辑器今天,富文本编辑器被用于许多应用中,包括简单的博客和复杂的内容管理系统.然而,选择一个并不容易,因为有很多具有不同功能的编辑器. 因此,在这篇文章中,我将评估5个React的富文本编辑 ...

  8. map函数中调用多个async await请求出现的promise问题解决

    以上这个打印会返回[promise,promise,promise]那么是什么原因造成的呢?我们先来一个方法解决: 但是以上这种解决方式并没有真正解决问题,还是会返回一个[promise,promis ...

  9. web server 接口调用测试

    1.新建工程 ,鼠标右击new 2.设置web server接口访问链接,然后下一步 生成代码 3.生成客户端代码 4.创建测试类 调用服务

  10. cadence报错:Class must be one of IC, IO, DISCRETE, MECHANICAL, PLATING_BAR or DRIVER_CELL.

    在原理图文件上右键选择Edit Object Properties, 然后在class一栏中修改class为IC, IO, DISCRETE, MECHANICAL, PLATING_BAR or D ...