0

0

css属性总结

高洛峰

高洛峰

发布时间:2017-02-15 13:30:31

|

1998人浏览过

|

来源于php中文网

原创

- 仅作用于块级元素的属性

KGOGOMALL
KGOGOMALL

主要功能:无限级分类,可自由调整分类位置,商品可在各分类间自由转移; 商品组合:可以为每种商品添加多种选项,方便顾客购买选择,比如:一件衣服顾客可以选择款式、花色、大小等,笔记本电脑,可以有cpu、内存、显示屏、硬盘等等扩展属性; 会员分级功能,会员积分功能。可根据会员积分自行设定用户组,管理员可自行定义会员获得积分的方式:按订单总金额或者按单个商品给予积分; 按照商品类别查看热卖、特价,允

下载

width,height(这俩可用于替换元素)

text—align, text—indent, vertical—align(也可用于表单元格和替换元素如input/img)

background-position(注意百分数和绝对值的区别,同时这个属性会影响平铺效果)


[基本视觉格式化]

立即学习前端免费学习笔记(深入)”;

1. 框模型
  - background包括内容框、内边距和边框,外边距通常是透明的,显示父元素的背景;

2. 水平属性

-子元素的左(右)margin,左(右)padding,左(右)border和内容框width的值加起来必须等于父元素的内容框width;

-如果设置margin—left,margin-right,width(只有这三个值可以设置为auto)之中的两个为特定值,余下的那个为auto,则设置为auto的属性值会自动计算以填充父元素的width:

 * 如果三个值都为非auto的特定值(over constrained),那么margin-right会被强制设置为auto;
 * 如果margin中某一个设置为auto,另一个设置特定值,width设置为auto,则设置为auto的margin会被置为0;
 * 如果width设置为特定值,两个margin设置为auto,则会**水平居中**!!

- 父元素的padding会跟子元素的margin叠加;

- 非替换元素的默认宽度由其内容决定;为替换元素设置width为auto(如img),那么其值将会是其本来的宽度;如果只设置width,那么height会等比例变化,反之亦然。

3. 垂直属性

与水平属性类似,不同点/注意点:

- 如果将margin-top或margin-bottom设置为auto,则会被默认为0,因此不能垂直居中囧,除非用特定值显示设置;
  - 使用百分数设置子元素height时,如果没有显示设置父元素的height值,那么子元素height会默认为auto;
  - 如果父元素只包含子块级元素,那么父元素的height将不包含子元素的margin,除非父元素有border或padding!!为什么呢,因为垂直方向上的margin会重叠。由此看来,要避免重叠,就需要使用border和padding来讲相邻margin隔开哦;

行内元素
  - line-height(行框高度)对于替换元素而言,就是其内容的高度。因此替换元素无行间距(line-height - font-size);对于非替换元素而言,是其内容框高度加上行间距;
  - 对于只包含文本的行,能改变其行间距离的只有line-height, font-size, vertical-align。

非替换元素:

- 当line-height值小于font-size时可能会产生文本重叠,为避免此现象可设置line-height为1 em(需设置font-size)或1(根据font-size的缩放因子),此外它会继承父元素的计算值而不是字面值,除非显式定义;

- 行内元素的内边距、外边距和边框都不会影响行高。其中外边距只有左右有效,上下无效;但如有正的内边距且有背景,则有可能覆盖邻行(仍不影响行高和布局,就是说设置了内边距行高也不会变高);

替换元素:

- 行内元素的内边距、外边距和边框会影响行高,且上下margin有效。
  - 为img设置一个height值,会影响行高,但其line-height的有效值不会改变,有些属性例如vertical-align仍然是使用line-height有效值进行计算;
  - 如果一个替换元素是一个块级元素或表格单元格中的唯一后代,那么就会被放到基线上,例如p中的img。解决方法:使用负margin将其往下拉或者设置display为block来避免生成行框。

4. 其他

- display属性:

   * 设置元素display属性为inline-block时, 其表现类似行内替换元素;如果没有显式定义width,则它会自动收缩以适应内容宽度,也就是说会使其宽度刚好能包含所有内容且没有多余;
   * 设置元素display属性为run-in,表示如果该元素后面是一个display为block的元素,则该元素表现为行内元素放在后面那个元素的开头,否则其本身将显示为块级元素。
   * 对于浮动或绝对定位元素,计算值与声明值可能不同。除inline-table之外大部分声明值(包括inline,inline-block,run-in)都会被计算为block。

[border、margin、padding]

  1. margin
     - 如果使用百分数,则计算值是相对于父元素的width值(not height)而言。哪怕是margin-top也是!

  2. border
     - 不指定的值会使用默认值, e.x.:

    { border: solid 1px dotted;
      border: 1px;
    }

    此处第二条border设置会覆盖第一条,由于在第二条中没有设置border-style,默认为none,所以将不会有border;


[浮动和定位]

浮动:

  1. 浮动元素的margin不会合并;

  2. 假设要使一个非替换元素浮动,需要为其指定一个width,否则会按浏览器规定的最小width浮动;

  3. 浮动元素会生成一个块级框,而不论这个元素本身是什么;

  4. 浮动元素的顶端不能比其父元素或之前所有浮动元素的顶端更高;

  5. 当浮动元素与文档流中的元素重叠时:
      (1)如果是块级元素,则其内容会在浮动元素之上,而边框和背景则在之下;
      (2)如果是行内元素,则其内容、边框和背景都在浮动元素之上,即不会被覆盖。
      这与元素出现在文档流中的先后顺序无关。

  6. 浮动元素必须包含其所有的浮动子元素;

  7. 使用clear属性清除浮动时,例如clear: left,实际上是为设置clear属性的元素增加margin-top。因此,有可能即使该元素设置了margin-top,也会与浮动元素紧紧相连,除非margin-top的值足够大。要使两者之间有间隔,可以设置浮动元素的margin-bottom。

    定位:

  8. 绝对定位

    *如果父元素是块级元素且position的值为非static,则子元素absolute定位是其外边距外界相对于父元素的边框界定区域定位;
      *通过指定top, bottom, left, right的值,可以隐式指定元素的宽高;
      *除bottom外被设置成auto的属性,会默认与元素静态位置的对应值一致;
      *水平/垂直方向上,当元素过度受限时(left和right的值以及元素水平方向的各尺寸之和不等于父元素width),会忽略right/bottom的值。如果有设置为auto的属性,则改变其值来满足前等式,如果两个则平分,所以可以用来做居中(margin设为auto,其他值均为0)!
      *假设一个元素有设置z-index值,那么其所有子元素都是相对于这个叠放上下文来放置,并且css2.1中规定所有元素绝对不能放在其叠放上下文的背景之下,但可以在其内容之下;

  9. 固定定位
      *right的值总是等于-left,bottom的值总是等于-top。

持续更新中。。。。。

本文参考 《css权威指南》


- 仅作用于块级元素的属性

width,height(这俩可用于替换元素)

text—align, text—indent, vertical—align(也可用于表单元格和替换元素如input/img)

background-position(注意百分数和绝对值的区别,同时这个属性会影响平铺效果)


[基本视觉格式化]

立即学习前端免费学习笔记(深入)”;

1. 框模型
  - background包括内容框、内边距和边框,外边距通常是透明的,显示父元素的背景;

2. 水平属性

-子元素的左(右)margin,左(右)padding,左(右)border和内容框width的值加起来必须等于父元素的内容框width;

-如果设置margin—left,margin-right,width(只有这三个值可以设置为auto)之中的两个为特定值,余下的那个为auto,则设置为auto的属性值会自动计算以填充父元素的width:

 * 如果三个值都为非auto的特定值(over constrained),那么margin-right会被强制设置为auto;
 * 如果margin中某一个设置为auto,另一个设置特定值,width设置为auto,则设置为auto的margin会被置为0;
 * 如果width设置为特定值,两个margin设置为auto,则会**水平居中**!!

- 父元素的padding会跟子元素的margin叠加;

- 非替换元素的默认宽度由其内容决定;为替换元素设置width为auto(如img),那么其值将会是其本来的宽度;如果只设置width,那么height会等比例变化,反之亦然。

3. 垂直属性

与水平属性类似,不同点/注意点:

- 如果将margin-top或margin-bottom设置为auto,则会被默认为0,因此不能垂直居中囧,除非用特定值显示设置;
  - 使用百分数设置子元素height时,如果没有显示设置父元素的height值,那么子元素height会默认为auto;
  - 如果父元素只包含子块级元素,那么父元素的height将不包含子元素的margin,除非父元素有border或padding!!为什么呢,因为垂直方向上的margin会重叠。由此看来,要避免重叠,就需要使用border和padding来讲相邻margin隔开哦;

行内元素
  - line-height(行框高度)对于替换元素而言,就是其内容的高度。因此替换元素无行间距(line-height - font-size);对于非替换元素而言,是其内容框高度加上行间距;
  - 对于只包含文本的行,能改变其行间距离的只有line-height, font-size, vertical-align。

非替换元素:

- 当line-height值小于font-size时可能会产生文本重叠,为避免此现象可设置line-height为1 em(需设置font-size)或1(根据font-size的缩放因子),此外它会继承父元素的计算值而不是字面值,除非显式定义;

- 行内元素的内边距、外边距和边框都不会影响行高。其中外边距只有左右有效,上下无效;但如有正的内边距且有背景,则有可能覆盖邻行(仍不影响行高和布局,就是说设置了内边距行高也不会变高);

替换元素:

- 行内元素的内边距、外边距和边框会影响行高,且上下margin有效。
  - 为img设置一个height值,会影响行高,但其line-height的有效值不会改变,有些属性例如vertical-align仍然是使用line-height有效值进行计算;
  - 如果一个替换元素是一个块级元素或表格单元格中的唯一后代,那么就会被放到基线上,例如p中的img。解决方法:使用负margin将其往下拉或者设置display为block来避免生成行框。

4. 其他

- display属性:

   * 设置元素display属性为inline-block时, 其表现类似行内替换元素;如果没有显式定义width,则它会自动收缩以适应内容宽度,也就是说会使其宽度刚好能包含所有内容且没有多余;
   * 设置元素display属性为run-in,表示如果该元素后面是一个display为block的元素,则该元素表现为行内元素放在后面那个元素的开头,否则其本身将显示为块级元素。
   * 对于浮动或绝对定位元素,计算值与声明值可能不同。除inline-table之外大部分声明值(包括inline,inline-block,run-in)都会被计算为block。

[border、margin、padding]

  1. margin
     - 如果使用百分数,则计算值是相对于父元素的width值(not height)而言。哪怕是margin-top也是!

  2. border
     - 不指定的值会使用默认值, e.x.:

    { border: solid 1px dotted;
      border: 1px;
    }

    此处第二条border设置会覆盖第一条,由于在第二条中没有设置border-style,默认为none,所以将不会有border;


[浮动和定位]

浮动:

  1. 浮动元素的margin不会合并;

  2. 假设要使一个非替换元素浮动,需要为其指定一个width,否则会按浏览器规定的最小width浮动;

  3. 浮动元素会生成一个块级框,而不论这个元素本身是什么;

  4. 浮动元素的顶端不能比其父元素或之前所有浮动元素的顶端更高;

  5. 当浮动元素与文档流中的元素重叠时:
      (1)如果是块级元素,则其内容会在浮动元素之上,而边框和背景则在之下;
      (2)如果是行内元素,则其内容、边框和背景都在浮动元素之上,即不会被覆盖。
      这与元素出现在文档流中的先后顺序无关。

  6. 浮动元素必须包含其所有的浮动子元素;

  7. 使用clear属性清除浮动时,例如clear: left,实际上是为设置clear属性的元素增加margin-top。因此,有可能即使该元素设置了margin-top,也会与浮动元素紧紧相连,除非margin-top的值足够大。要使两者之间有间隔,可以设置浮动元素的margin-bottom。

    定位:

  8. 绝对定位

    *如果父元素是块级元素且position的值为非static,则子元素absolute定位是其外边距外界相对于父元素的边框界定区域定位;
      *通过指定top, bottom, left, right的值,可以隐式指定元素的宽高;
      *除bottom外被设置成auto的属性,会默认与元素静态位置的对应值一致;
      *水平/垂直方向上,当元素过度受限时(left和right的值以及元素水平方向的各尺寸之和不等于父元素width),会忽略right/bottom的值。如果有设置为auto的属性,则改变其值来满足前等式,如果两个则平分,所以可以用来做居中(margin设为auto,其他值均为0)!
      *假设一个元素有设置z-index值,那么其所有子元素都是相对于这个叠放上下文来放置,并且css2.1中规定所有元素绝对不能放在其叠放上下文的背景之下,但可以在其内容之下;

  9. 固定定位
      *right的值总是等于-left,bottom的值总是等于-top。

更多css属性总结 相关文章请关注PHP中文网!

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Golang 实际项目案例:从需求到上线
Golang 实际项目案例:从需求到上线

《Golang 实际项目案例:从需求到上线》以真实业务场景为主线,完整覆盖需求分析、架构设计、模块拆分、编码实现、性能优化与部署上线全过程,强调工程规范与实践决策,帮助开发者打通从技术实现到系统交付的关键路径,提升独立完成 Go 项目的综合能力。

2

2026.02.26

Golang Web 开发路线:构建高效后端服务
Golang Web 开发路线:构建高效后端服务

《Golang Web 开发路线:构建高效后端服务》围绕 Go 在后端领域的工程实践,系统讲解 Web 框架选型、路由设计、中间件机制、数据库访问与接口规范,结合高并发与可维护性思维,逐步构建稳定、高性能、易扩展的后端服务体系,帮助开发者形成完整的 Go Web 架构能力。

3

2026.02.26

Golang 并发编程专题:掌握多核时代的核心技能
Golang 并发编程专题:掌握多核时代的核心技能

《Golang 并发编程专题:掌握多核时代的核心技能》系统讲解 Go 在并发领域的设计哲学与实践方法,深入剖析 goroutine、channel、调度模型与并发安全机制,结合真实场景与性能思维,帮助开发者构建高吞吐、低延迟、可扩展的并发程序,全面提升多核时代的工程能力。

5

2026.02.26

batoto漫画官网入口与网页版访问指南
batoto漫画官网入口与网页版访问指南

本专题系统整理batoto漫画官方网站最新可用入口,涵盖最新官网地址、网页版登录页面及防走失访问方式说明,帮助用户快速找到batoto漫画官方平台,稳定在线阅读各类漫画内容。

356

2026.02.25

Steam官网正版入口与注册登录指南_新手快速进入游戏平台方法
Steam官网正版入口与注册登录指南_新手快速进入游戏平台方法

本专题系统整理Steam官网最新可用入口,涵盖网页版登录地址、新用户注册流程、账号登录方法及官方游戏商店访问说明,帮助新手玩家快速进入Steam平台,完成注册登录并管理个人游戏库。

78

2026.02.25

TypeScript全栈项目架构与接口规范设计
TypeScript全栈项目架构与接口规范设计

本专题面向全栈开发者,系统讲解基于 TypeScript 构建前后端统一技术栈的工程化实践。内容涵盖项目分层设计、接口协议规范、类型共享机制、错误码体系设计、接口自动化生成与文档维护方案。通过完整项目示例,帮助开发者构建结构清晰、类型安全、易维护的现代全栈应用架构。

35

2026.02.25

Python数据处理流水线与ETL工程实战
Python数据处理流水线与ETL工程实战

本专题聚焦 Python 在数据工程场景下的实际应用,系统讲解 ETL 流程设计、数据抽取与清洗、批处理与增量处理方案,以及数据质量校验与异常处理机制。通过构建完整的数据处理流水线案例,帮助开发者掌握数据工程中的性能优化思路与工程化规范,为后续数据分析与机器学习提供稳定可靠的数据基础。

14

2026.02.25

Java领域驱动设计(DDD)与复杂业务建模实战
Java领域驱动设计(DDD)与复杂业务建模实战

本专题围绕 Java 在复杂业务系统中的建模与架构设计展开,深入讲解领域驱动设计(DDD)的核心思想与落地实践。内容涵盖领域划分、聚合根设计、限界上下文、领域事件、贫血模型与充血模型对比,并结合实际业务案例,讲解如何在 Spring 体系中实现可演进的领域模型架构,帮助开发者应对复杂业务带来的系统演化挑战。

5

2026.02.25

Golang 生态工具与框架:扩展开发能力
Golang 生态工具与框架:扩展开发能力

《Golang 生态工具与框架》系统梳理 Go 语言在实际工程中的主流工具链与框架选型思路,涵盖 Web 框架、RPC 通信、依赖管理、测试工具、代码生成与项目结构设计等内容。通过真实项目场景解析不同工具的适用边界与组合方式,帮助开发者构建高效、可维护的 Go 工程体系,并提升团队协作与交付效率。

19

2026.02.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.5万人学习

CSS教程
CSS教程

共754课时 | 36.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号