初学CSS

初学CSS

  • 打开浏览器的审查元素,把一个网站的style都删除了就可以看到它的html是怎么写的

CSS

  • ID是不能随便使用的,ID一般是留给JS使用的,一般看到ID都会联想到被JS操作

Google开发者工具

  • 如何调整开发者工具的位置?开发者工具的右上角,点击关闭左边的三个小圆点,dock side可以调整
  • 怎么查看页面的某个元素对应的HTML?右键-检查,或者开发者工具最左边的小箭头
  • 怎么模拟响应式网站(手机)? 上一选项小箭头的右边
  • 怎么查看页面的某个元素对应的CSS?选中HTML后会在右下角的style中显示,其中灰色的部分是系统自动设定的,不用关注,白色那部分才需要关注;甚至可以查看文件是在哪个文件的哪一行中
  • 在CSS中往下拉,甚至可以告诉你这些css是从哪里继承来的(inherited from);字体比较亮的是能够继承的(color/font-/text-/line-),字体呈透明的是不能够继承的,比如background-color,特殊的不能被继承的会显示删除线,比如h标签是不能继承父元素的大小的,
  • 怎么查看层叠性?在css查看窗口中,其实从下往上就是加载的顺序,可以看到被删除线装饰的声明其实就是被覆盖的

div标签

  • 特点(区别于其他同父元素下的标签)
  • 作用(他的特点注定了他的作用)
  • 使用场景(工程项目)
  • 怎么样使用(需要容纳在那个标签下、需要配合哪些标签使用)

解答

  • 单纯的HTML是不需要div标签的,只有配合css才能显示出其意义——没有前面提到的那些标签一样的语义化
  • 一般div标签是用来和span标签做对比的,div完成大的布局,span完成小的局部的改变,比如<p>i am a <span>boy</span></p>
  • span可以退到与font/label做对比,font已经不用了,label是用于表单元素绑定的
  • 默认情况下div会单独占一行,而span不会单独占一行
  • div是容器级别的标签,span是文本级别的标签,html标签只有这两种区别
  • 用以完成网页的布局,如常见的头身脚3段式布局,头部一般包含LOG,导航条;身体一般有侧边栏,显示内容的区域,底部是一些超链接和版权

解答扩展

容器级别标签和文本级别标签的区别

  • 容器级别标签可以嵌套其他所有标签
  • 文本级别标志只能嵌套文字/超链接/图片
  • 怎么验证说法2:<p>我是段落<h1>我是标题</h1></p>,在浏览器中发现会变成<p>我是段落</p><h1>我是标题</h1><p></p>前面也有试验过的

块级元素和行内元素的区别

  • 类比HTML中的容器级标签和文本级标签,CSS中对应的就是这两种
  • 块级元素会独占一行,行内元素则不会
  • 所有的容器级标签都是块级元素,除了P标签外文本级标签都是行内元素
  • 关于宽高度:如果没有设置,块级会和父元素一样宽;行内元素内容一样宽,且不能设置宽高
  • 行内块级元素:为了解决元素不独占一行,且能够设置宽高而提出的解决方案,类似的img标签就是如此
  • 怎么让这三者相互转换?
  • 通过在css中设置display属性(inline\block\inline-block)

练习

  • 百度搜索首页
  • 布局分层:头部:logo\导航;身体:搜索框(核心内容)
  • 问题:每一个div的宽度高度,也就是切图问题好,现在响应式已经很流行了,怎么设置?
  • 哪些数据单独占一行?哪些数据合起来单独占一行?把这些单独占一行的数据都用div进行布局

如何设置背景图片

  • 背景颜色;背景图片;平铺方式;关联方式;定位方式;
  • 使用css的background-img:url(地址)属性
  • 地址可以是本地的地址,也可以是网络上的地址
  • 考虑背景大小,所下载的图片大小,如果背景大于图片,会如何显示?强行拉伸图片填满空间?或者图片在空间内重复填充,如果是后者,图片大小与背景不一定是整数倍,那么该如何显示?如果图片大于背景,又如何显示?
  • 怎么样让背景图片不以平铺的方式填充div(背景),设置backgournd-repeat,里面有4个取值
  • 这种平铺显示的方式有什么优点?
  • 一般作为网页的背景需要较大的图片,较大的图片传输是比较慢的,使用小的平铺的方式能够加快网页下载速度,有些设计得很好的图片甚至能让你看不出是多张图片平铺显示的
  • 还有导航条,导航条的背景颜色可能是蓝色的,出了直接设置背景颜色之外,还可以切成小分平铺的方式

如何控制背景图片的位置?

  • 使用css的background-position: 垂直方向 水平方向;取值可以为关键字,也可以为具体的像素值
  • 垂直方向:left center right;水平方向:top center bottom

图片的伪装响应式布局

  • 用一张比较大的,重要信息在中间的图片当做背景图片
  • 用background-position:center居中,实现中间的文字始终位于视点中央
  • 有些图片不能下载(比如说腾讯视频首页的一些焦点背景图片),右键是不能够下载的,可以通过查看审查元素获得地址来进行下载
  • 一般下面有滚动条的网站都是比较垃圾的网站所以我们不能直接在div中用img作为填充

什么是背景关联方式?

  • 默认情况下背景图片会随着滚动条的滚动而滚动,如果不想让背景图片随着滚动条滚动,修改图片背景和滚动条的关联方式background-attachment:,取值有scroll(默认),fixed

CSS精灵图

  • 概念:精灵图是图片的一种合成技术
  • 应用场景:在电商网站中,有大量的图片,如果每次请求一张图片都会导致大量的并发
  • 使用:配合背景图片,背景定位显示
  • 切图可能是用在精灵图中的了
  • 如果你注意的话,B站的小图标滑动显示视频不同位置也是通过精灵图实现的

字符实体与外边距

  • 注意有时候看起来像是有外边距实际上是没有的,空开的是字符实体
  • 可以试验一下<span>test</span> <span>test</span>,通过inline-block转化成可设置宽高的块级元素看看
  • 注意一下空格实体元素如果不包裹在某个标签中,在浏览器中也是会显示的,但是却是测量不出宽高的(应该是默认的值)
  • 可以看到设置margin后会变得更宽
  • 在默认情况下所有body的子元素都会和body有一个margin/padding,所以在开始之前一般都会将其初始化,即设置*{margin,padding:0;}
  • 外边距合并,左右外边距是会叠加的,上下外边距是不会叠加的,例如span.class1设置了margin为50px,span.class2设置了margin为100px,则在浏览器中会显示两个div左右间距为150px,但是如果是div.class1设置了margin为50px,div.class2设置了margin为100px,则在浏览器中会显示两个div上下间距为100px

宽度与高度

  • 注意区分3个概念:内容的宽高;元素的宽高;元素空间的宽高;我们知道任何标签都可以通过inline-block来设置宽度与高度,所以就有了讨论的意义
  • 常规意义上布局的必定是看到的——元素空间的宽高,而对任意一项作出改变都会导致布局发生大的改变
  • 通过box-sizing属性的设置可以避免元素宽高的问题,取值有content-box(默认取值),border-box(改变border/padding都不会有影响),注意,对margin不会有影响,调整margin后即便设置了boder-box也会发生改变
  • text-align的用法,嵌套的div为什么无法居中?
  • 只能从magrin,padding的角度考虑?
  • 容易被忽略:调整padding会导致父元素的元素宽度变大,手工对应减去父元素的width和higth就可以了,或者直接对父元素使用box-sizing:border-box;
  • 对内部盒子使用margin的时候为什么外部盒子也会跟随着往下走?(百度一下margin塌陷)
  • 解决方法只能是给外盒子加上border(注意,边框至少要写大小和类型2个属性,只写任意其中一项是无效的)
  • 对嵌套盒子位置的定位应该考虑padding,因为margin是给兄弟元素使用的
  • 对于嵌套盒子,使用margin:0,auto;可以实现水平居中(为什么?),但反过来是无法实现垂直居中的

text-align:center和margin:0 auto;的对比

  • 首先确认属性是给谁声明的:text-align:center都是给父元素声明的,margin:0 auto;是给想要水平居中的元素声明的
  • text-align:是给文字,图片使用的,子div不会受到影响
  • 事实上margin:0 auto;应该也可以给文字,图片使用,只要他们被转换成line-block类型

清空浏览器默认的padding和margin

  • 使用通配符*的性能不会太好,因为会进行遍历所有元素,只选择必要的就可以了

行高

  • 在CSS中,所有行都有自己的行高(应该是属于盒子模型中的内容高度)
  • 当div的内容高度未设置时,默认值为内容的高度,内容高度可能等于多行行高高度的结果,也就是内容高度是必然是行高的整数倍(未设置时)
  • 怎么设置行高?line-higth
  • 设置在哪里?设置在父元素中
  • 注意行高不等于字体的高度,字体会在行高中默认垂直居中,可以利用这个特性使得一行文字在某个盒子元素内垂直居中:把行高设置为盒子高度,但是多行文字就只能使用padding了
  • 为什么需要行高?字体要以哪里为中线展示?
  • 用firework甚至能把字体还原出来,因为可以调节字体、字号、行高
  • 右边内边距测量有误差的原因:字号大于剩余内容边距,换行了,一般以左边距为基准
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值