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

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

  基础选择器由 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. 4K60帧!RayLink远程控制软件如何帮助设计师远程办公?

    司机在家能远程工作吗?大写的"能"!!!如果你听说过司机远程办公,那你一定对下面这张图不陌生~ (远程办公的叉车司机) 这张图展示的是负责在库房工作的叉车司机在非办公区域远程办公的 ...

  2. 为什么vue3要使用ref

    vue3中使用ref来创建响应式数据,让习惯了选项式API的我很不习惯.因为得使用xxx.value来读写响应式数据,没有vue2中直接使用this.xxx来读写简洁. vue3这样设计的原因是原生J ...

  3. FMC145-四路16位125Msps AD FMC子卡模块 模拟信号 中频信号采集 信号发出

    FMC145-四路16位125Msps AD FMC子卡模块 一.概述 该板卡可实现4路16bit 125Msps AD 功能,是xilinx开发板设计的标准板卡.FMC连接器是一种高速多pin的互连 ...

  4. 启动JAVA服务

    # -*- coding: utf-8 -*- import re import sys from subprocess import Popen, PIPE import os import tim ...

  5. ABAP学习(34):cl_gui_alv_grid实现Table Maintain

    实现Table Maintain 通过类CL_GUI_ALV_GRID,实现Table Maintain功能. 实现效果: 1.创建Program; 2.创建空Screen 100; 3.创建GUI ...

  6. VeeValidate 注册实例

    注册 1 安装: npm install vee-validate --save 2.mian.js 填写 import Vue from 'vue' import VeeValidate, {Val ...

  7. ubuntu 20.04 基于kubeadm部署kubernetes 1.22.4集群及部署集群管理工具

    一.环境准备: 集群版本:kubernetes 1.22.4 服务器系统 节点IP 节点类型 服务器-内存/CUP hostname Ubuntu 20.04 192.168.1.101 主节点 2G ...

  8. Godot的场景树

    在Godot中,一个游戏的启动大致流程如下: 简而言之,Godot的main启动一个进程,加载所需的驱动设备(如渲染设备:GL/GLES/Vulkan等).音频设备,输入控制器设备等等:然后进入主循环 ...

  9. js字符串截取(获取指定字符后面的所有字符内容)

    function getCaption(obj, text){ let index = obj.lastIndexOf(text) + text.length-1; obj = obj.substri ...

  10. calibredrv 对layer做操作

    #clip.tclset L [layout create xxx.gds] $L create layer 10.0 $L create polygon 10.0 10 1000 1000 2000 ...