黑马程序员——html css基础——day05——盒子模型

目录:

  1. 选择器
    1. 结构伪类选择器
    2. :nth-child(公式)
    3. 伪元素选择器
  2. PxCook
  3. 盒子模型
    1. 盒子模型-组成
    2. 边框线
      1. 四个方向
      2. 单方向边框线
    3. 内边距
    4. 尺寸计算
    5. 外边距
    6. 版心居中
    7. 清除默认样式
    8. 元素溢出
    9. 外边距问题
      1. 合并现象
      2. 外边距塌陷
    10. 行内元素–内外边距问题
    11. 圆角
    12. 盒子阴影(拓展)
  4. 综合案例一:产品卡片
    1. CSS书写顺序:
    2. HTML标签
    3. CSS样式
  5. 综合案例二:新闻列表
    1. 整体布局
    2. 标题区域
    3. 内容区域

1.选择器

结构伪类选择器

基本使用 :作用:根据元素的结构关系查找元素。

 

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    /* 结构伪类选择器 */
    /* 1.选择第一个li */
    ul li:first-child {
      color: pink;
    }

    /* 2. 最后一个小li */
    ul li:last-child {
      color: green;
    }

    /* 3. 选择其中任意一个 */
    ul li:nth-child(6) {
      color: red;
    }
  </style>
</head>

<body>
  <!-- ul>li{第$个}*8 -->
  <ul>
    <li>我是第1个小li</li>
    <li>我是第2个小li</li>
    <li>我是第3个小li</li>
    <li>我是第4个小li</li>
    <li>我是第5个小li</li>
    <li>我是第6个小li</li>
    <li>我是第7个小li</li>
    <li>我是第8个小li</li>
  </ul>
</body>

</html>

 

:nth-child(公式)

提示:公式中的n取值从 0 开始。  

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    /* 公式 */
    /* 2n 是偶数个 */


    ul li:nth-child(2n) {
      background-color: #eee;
    }

    ul li:hover {
      background-color: #bbb;
    }


    /* 2n+1 奇数 */
    /* ul li:nth-child(2n + 1) {
      background-color: #eee;
    } */

    /* 5n 5的倍数 */
    /* ul li:nth-child(5n) {
      background-color: #eee;
    } */

    /* -n+5 选择第5个以前的 包含第5个 */
    /* ul li:nth-child(-n + 5) {
      background-color: #eee;
    } */

    /* n+5 选择第5个以后的 包含第5个 */
    /* ul li:nth-child(n + 5) {
      background-color: #eee;
    } */
  </style>
</head>

<body>
  <ul>
    <li>我是第1个小li</li>
    <li>我是第2个小li</li>
    <li>我是第3个小li</li>
    <li>我是第4个小li</li>
    <li>我是第5个小li</li>
    <li>我是第6个小li</li>
    <li>我是第7个小li</li>
    <li>我是第8个小li</li>
    <li>我是第9个小li</li>
    <li>我是第10个小li</li>
    <li>我是第11个小li</li>
    <li>我是第12个小li</li>
    <li>我是第13个小li</li>
    <li>我是第14个小li</li>
    <li>我是第15个小li</li>
  </ul>
</body>

</html>

 

伪元素选择器

作用:创建虚拟元素(伪元素),用来摆放装饰性的内容

 

 

div::before {
  content: "before 伪元素";
}
div::after {
  content: "after 伪元素";
}

注意点:

  • 必须设置 content: ””属性,用来 设置伪元素的内容,如果没有内容,则引号留空即可

  • 伪元素默认是行内显示模式

  • 权重和标签选择器相同

2.PxCook

PxCook(像素大厨) 是一款切图设计工具软件。支持PSD文件的文字、颜色、距离自动智能识别。

  • 开发面板(自动智能识别)

  • 设计面板(手动测量尺寸和颜色)

使用方法:创建项目 → 输入 项目名称、项目类型 Web → 单击按钮【创建项目】 → 单击按钮【添加】,导入设计稿

 

3.盒子模型

作用:布局网页,摆放盒子和内容。

盒子模型-组成
  • 内容区域 – width & height

  • 内边距 – padding(出现在内容与盒子边缘之间)

  • 边框线 – border

  • 外边距 – margin(出现在盒子外面)

div {
  margin: 50px;
  border: 5px solid brown;
  padding: 20px;
  width: 200px;
  height: 200px;
  background-color: pink;
}

 

 

边框线
四个方向

属性名:border(bd)

属性值:边框线粗细 线条样式 颜色(不区分顺序)

 

div {
  border: 5px solid brown;
  width: 200px;
  height: 200px;
  background-color: pink;
}
单方向边框线

属性名:border-方位名词(bd+方位名词首字母,例如,bdl)

属性值:边框线粗细 线条样式 颜色(不区分顺序)

div {
  border-top: 2px solid red;
  border-right: 3px dashed green;
  border-bottom: 4px dotted blue;
  border-left: 5px solid orange;
  width: 200px;
  height: 200px;
  background-color: pink;
}
内边距

作用:设置 内容 与 盒子边缘 之间的距离。

  • 属性名:padding / padding-方位名词

div {
  /* 四个方向 内边距相同 */
  padding: 30px;
  /* 单独设置一个方向内边距 */
  padding-top: 10px;
  padding-right: 20px;
  padding-bottom: 40px;
  padding-left: 80px;
  width: 200px;
  height: 200px;
  background-color: pink;
}

 提示:添加 padding 会撑大盒子。

  • padding 多值写法

 

技巧:从开始顺时针赋值,当前方向没有数值则与对面取值相同。  

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .box {
      /* 1. 手动去减 */
      /* width: 160px;
      height: 160px; */
      /* 2. css3 盒子模型 box-sizing: border-box */
      box-sizing: border-box;
      width: 200px;
      height: 200px;
      background-color: pink;
      border: 10px solid red;
      padding: 10px;
    }
  </style>
</head>

<body>
  <div class="box">qwe</div>
</body>

</html>
尺寸计算

 默认情况:盒子尺寸 = 内容尺寸 + border 尺寸 + 内边距尺寸

结论:给盒子加 border / padding 会撑大盒子

解决:

  • 手动做减法,减掉 border / padding 的尺寸

  • 內减模式:box-sizing: border-box

外边距

作用:拉开两个盒子之间的距离

属性名:margin

提示:与 padding 属性值写法、含义相同

版心居中

左右 margin 值 为 auto(盒子要有宽度)  

div {
  margin: 0 auto;
  width: 1000px;
  height: 200px;
  background-color: pink;
}
  1. 行内和行内块元素水平居中对齐,给块级的父元素添加 tac

  2. 块级元素水平居中对齐: 让盒子的左右外边距设置为 auto 就可以了。 margin: auto;

  • 小米 margin-left: auto; margin-right: auto;

  • 京东/淘宝: margin: 0 auto;

清除默认样式

清除标签默认的样式,比如:默认的内外边距。

/* 清除默认内外边距 */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
/* 清除列表项目符号 */
li {
  list-style: none;
}
元素溢出

作用:控制溢出元素的内容的显示方式。

属性名:overflow

 

外边距问题
合并现象

场景:垂直排列的兄弟元素,上下 margin合并

现象:取两个 margin 中的较大值生效

 

.one {
  margin-bottom: 50px;
}
.two {
  margin-top: 20px;
}
外边距塌陷
  • 场景:父子级的标签,子级的添加 上外边距 会产生塌陷问题
  • 现象:导致父级一起向下移动
.son {
  margin-top: 50px;
  width: 100px;
  height: 100px;
  background-color: orange;
}

 

解决方法:

  • 取消子级margin,父级设置padding

  • 父级设置 overflow: hidden

  • 父级设置 border-top

行内元素 – 内外边距问题
  • 场景:行内元素添加 margin 和 padding,无法改变元素垂直位置
  • 解决方法:给行内元素添加 line-height 可以改变垂直位置
span {
  /* margin 和 padding 属性,无法改变垂直位置 */
  margin: 50px;
  padding: 20px;
  /* 行高可以改变垂直位置 */
  line-height: 100px;
}
圆角
  • 作用:设置元素的外边框为圆角。
  • 属性名:border-radius
  • 属性值:数字+px / 百分比
  • 提示:属性值是圆角半径

 

  • 多值写法

 

技巧:从左上角开始顺时针赋值,当前角没有数值则与对角取值相同。

  • 正圆形状:给正方形盒子设置圆角属性值为 宽高的一半 / 50%

img {
  width: 200px;
  height: 200px;
  
  border-radius: 100px;
  border-radius: 50%;
}

 

  • 胶囊形状:给长方形盒子设置圆角属性值为 盒子高度的一半

div {
  width: 200px;
  height: 80px;
  background-color: orange;
  border-radius: 40px;
}

 

盒子阴影(拓展)

作用:给元素设置阴影效果

属性名:box-shadow

属性值:X 轴偏移量 Y 轴偏移量 模糊半径 扩散半径 颜色 内外阴影

注意:

  • X 轴偏移量 和 Y 轴偏移量 必须书写

  • 默认是外阴影,内阴影需要添加 inset

div {
  width: 200px;
  height: 80px;
  background-color: orange;
  box-shadow: 2px 5px 10px 0 rgba(0, 0, 0, 0.5) inset;
}

 

4.综合案例一:产品卡片

CSS 书写顺序:
  1. 盒子模型属性

  2. 文字样式

  3. 圆角、阴影等修饰属性

HTML标签
<div class="product">
  <img src="./images/liveSDK.svg" alt="">
  <h4>抖音直播SDK</h4>
  <p>包含抖音直播看播功能</p>
</div>
CSS样式
<style>
  * {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
  }

  body {
    background-color: #f1f1f1;
  }

  .product {
    margin: 50px auto;
    padding-top: 40px;

    width: 270px;
    height: 253px;
    background-color: #fff;
    text-align: center;

    border-radius: 10px;
  }

  .product h4 {
    margin-top: 20px;
    margin-bottom: 12px;
    font-size: 18px;
    color: #333;
    font-weight: 400;
  }

  .product p {
    font-size: 12px;
    color: #555;
  }
</style>

 

5.综合案例二:新闻列表

整体布局
<style>
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

li {
  list-style: none;
}

a {
  text-decoration: none;
}

.news {
  margin: 100px auto;
  width: 360px;
  height: 200px;
  /* background-color: pink; */
}
</style>

<div class="news"></div>
标题区域
<style>
.news .hd {
  height: 34px;
  background-color: #eee;
  border: 1px solid #dbdee1;
  border-left: 0;
}

.news .hd a {
  /* -1 盒子向上移动 */
  margin-top: -1px;
  display: block;
  border-top: 3px solid #ff8400;
  border-right: 1px solid #dbdee1;
  width: 48px;
  height: 34px;
  background-color: #fff;

  text-align: center;
  line-height: 32px;
  font-size: 14px;
  color: #333;
}
</style>

<div class="hd"><a href="#">新闻</a></div>
内容区域
<style>
.news .bd {
  padding: 5px;
}

.news .bd li {
  padding-left: 15px;
  background-image: url(./images/square.png);
  background-repeat: no-repeat;
  background-position: 0 center;
}

.news .bd li a {
  padding-left: 20px;
  background: url(./images/img.gif) no-repeat 0 center;

  font-size: 12px;
  color: #666;
  line-height: 24px;
}

.news .bd li a:hover {
  color: #ff8400;
}
</style>

<div class="bd">
  <ul>
    <li><a href="#">点赞“新农人” 温暖的伸手</a></li>
    <li><a href="#">在希望的田野上...</a></li>
    <li><a href="#">“中国天眼”又有新发现 已在《自然》杂志发表</a></li>
    <li><a href="#">急!这个领域,缺人!月薪4万元还不好招!啥情况?</a></li>
    <li><a href="#">G9“带货”背后:亏损面持续扩大,竞争环境激烈</a></li>
    <li><a href="#">多地力推二手房“带押过户”,有什么好处?</a></li>
  </ul>
</div>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/354348.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Java】Spring的APO及事务

今日目标 能够理解AOP的作用 能够完成AOP的入门案例 能够理解AOP的工作流程 能够说出AOP的五种通知类型 能够完成"测量业务层接口万次执行效率"案例 能够掌握Spring事务配置 一、AOP 1 AOP简介 问题导入 问题1&#xff1a;AOP的作用是什么&#xff1f; 问题2&am…

java设计模式:工厂模式

1&#xff1a;在平常的开发工作中&#xff0c;我们可能会用到不同的设计模式&#xff0c;合理的使用设计模式&#xff0c;可以提高开发效率&#xff0c;提高代码质量&#xff0c;提高系统的可拓展性&#xff0c;今天来简单聊聊工厂模式。 2&#xff1a;工厂模式是一种创建对象的…

HCIP-交换机实验

实验拓扑 实验需求 实验思路 配置IP地址 配置vlan 实验步骤 配置IP地址 以pc1为例&#xff1a; 配置vlan 以sw1为例&#xff1a; <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sys sw1 [sw1]vlan 3 Jan 28 2024 15:39:45-08:00 sw1 DS/…

HPE ProLiant MicroServer Gen8安装windows server 2019

按照《HP MicroServer Gen8使用官方工具安装Windows Sverver 2016教程》安装时&#xff0c;安装系统选项并没有server 2019可选&#xff0c;依然只是server 2012&#xff0c;我还以为是从单位拿回来的镜像有误&#xff0c;从官方下载了server 2019评估版&#xff0c;但依然只有…

【算法专题】二分查找(进阶)

&#x1f4d1;前言 本文主要是二分查找&#xff08;进阶&#xff09;的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#x1f304;每日…

【UEFI实战】Redfish的BIOS实现——生成EDK数据

生成Redfish文件 Redfish数据的表示形式&#xff0c;最常用的是JSON。将JSON表示的数据转换成C语言可以操作的结构体&#xff0c;是必不可少的步骤。当然如果手动转换的话&#xff0c;需要浪费大量的时间&#xff0c;因此DMTF组织开发了一个工具&#xff0c;用于将JSON数据快速…

实验6:循环与子程序设计

1、实验目的&#xff1a; 通过完成将字节内存单元存储的8个数依次显示在屏幕上的程序设计&#xff0c;掌握循环与子程序设计的方法。 2、实验内容&#xff1a; 将内存单元存储的8个两位16进制数&#xff1a;01H, 25H, 38H, 62H, 8DH, 9AH, BAH, CEH依次显示在屏幕上。 3、实…

CSS设置单行文字水平垂直居中的方法

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>单行文字水平垂直居中</title><style>div {/* 给div设置宽高 */width: 400px;height: 200px;margin: 100px auto;background-color: red;/…

4.列表选择弹窗(CenterListPopup)

愿你出走半生,归来仍是少年&#xff01; 环境&#xff1a;.NET 7、MAUI 在屏幕中间弹窗的列表选择弹窗。 1.布局 <?xml version"1.0" encoding"utf-8" ?> <toolkit:Popup xmlns"http://schemas.microsoft.com/dotnet/2021/maui"x…

【学网攻】 第(12)节 -- 动态路由(RIP)

系列文章目录 目录 系列文章目录 文章目录 文章目录 前言 一、动态路由是什么&#xff1f; 二、实验 1.引入 总结 文章目录 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用【学网攻】 第(3)节 -- 交换机配置聚合端口【学网攻】 第(4…

【GitHub项目推荐--推荐一个开源的任务管理工具(仿X书/X钉)】【转载】

推荐一个开源的任务管理工具&#xff0c;该工具会提供各类文档协作功能、在线思维导图、在线流程图、项目管理、任务分发、即时 IM&#xff0c;文件管理等等。该开源项目使用到 Vue、Element-UI、ECharts 等技术栈。 开源地址&#xff1a;www.github.com/kuaifan/dootask 预览地…

linux基础学习(8):grep命令、通配符、管道符

1.grep命令 1.1命令格式 grep 选项 "搜索内容" 文件名 选项&#xff1a; -i&#xff1a;忽略大小写 -n&#xff1a;输出行号 -v&#xff1a;查找文件内不含搜索内容的部分 --colorauto&#xff1a;把搜索内容用不同颜色标注出来 1.2grep命令与find命令的区…

class_19:抽象类(纯虚函数不能被实例化)

#include <iostream>using namespace std;class Teacher{ public:string name;string school;virtual void goinclass() 0;//纯虚函数不能被实例化 抽象类virtual void startclass() 0;//纯虚函数不能被实例化virtual void afterclass() 0;//纯虚函数不能被实例化 };…

分段函数线性化方法matlab测试

目录 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 4 matlab测试结果说明 5 分段线性化应用 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 clc;clear all; gn10;tn1; x_pfsdpvar(1, t…

如何搭建自动化测试框架

关于测试框架的好处&#xff0c;比如快速回归提高测试效率&#xff0c;提高测试覆盖率等这里就不讨论了。这里主要讨论自动化框架包含哪些内容&#xff0c;以及如何去设计一个测试框架。 1. 什么是自动化测试框架&#xff1f; 它是由一个或多个自动化测试基础模块、自动化测试…

Keil软件某些汉字输出乱码,0xFD问题,51单片机

1. 问题 keil软件输入某些汉字的时候会输出乱码&#xff0c;例如&#xff1a;升、 数 2. 原因 keil软件会忽略0xFD。 升的GB2312编码为 0xc9fd&#xff0c;keil解析为0xc9数的GB2312编码为 0xcafd&#xff0c;keil解析为0xca 关于Keil软件中0xFD问题的说明 3. 解决方案1 …

kali系统入侵电脑windows(win11系统)渗透测试,骇入电脑教学

本次渗透测试将使用kali虚拟机&#xff08;攻击机&#xff09;对本机&#xff08;靶机&#xff09;进行入侵并监控屏幕 声明&#xff1a;本篇仅仅是将本机作为靶机的一次简易渗透测试&#xff0c;实际情况中基本不可能出现如此简单的木马骇入&#xff08;往往在上传木马时就被防…

Linux 增加 SWAP 空间

一、需求 通过阿里云启动项目时&#xff0c;使用Vuepress build编译静态页面时内存需要800MB&#xff0c;导致内存不够&#xff0c;因此考虑使用swap方式&#xff0c;置换一些内存资源存放swap磁盘。 [rootxxx myblog]# npm run docs:dev> myblog1.0.0 docs:dev > vuep…

Java基于 SpringBoot+Vue 的高校心理教育辅导系统的研究与实现

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

基于STM32的智能手环设计与实现

需要原理图工程&#xff0c;源码&#xff0c;PCB工程的朋友收藏&#xff0c;这篇文章关注我&#xff0c;私我吧&#xff01;&#xff01;&#xff01; 基于STM32的智能手环设计与实现 摘要一、研究背景及意义二、实现功能三、系统方案设计系统方案设计框图3.1 单片机芯片选择3…