五大布局技术 2.1.2 特性

  • 主轴(Main Axis)和交叉轴(Cross Axis):Flexbox布局中,主轴和交叉轴分别定义了项目排列的方向。
  • 项目对齐:Flexbox允许对项目进行对齐,包括水平对齐、垂直对齐等。
  • 空间分配:Flexbox可以自动分配空间,确保项目在容器中均匀分布。 2.1.3 使用方法
  • 创建一个flex容器,并设置display: flex;
  • 添加子元素作为flex项目。
  • 使用flex属性(如flex-direction, justify-content, align-items等)来控制布局。

2.2 Grid布局 2.2.1 概述 Grid布局是一种二维布局方式,它允许开发者同时控制行与列,从而实现复杂的布局结构。 2.2.2 特性

  • 网格(Grid):Grid布局将容器划分为行和列,每个行和列称为一个网格单元。
  • 网格线(Grid Line):网格线是网格单元之间的分隔线。
  • 网格区域(Grid Area):网格区域是网格单元的集合,用于放置内容。 2.2.3 使用方法
  • 创建一个grid容器,并设置display: grid;
  • 使用grid-template-columnsgrid-template-rows定义网格的列和行。
  • 使用grid-columngrid-row属性定位内容。
a[href="https"] {
  color: green;
}

3.1.2 伪类选择器

  • :nth-child():选择一个父元素下特定的子元素。例如,选择第二个子元素:
    
    div:nth-child(2) {
    color: red;
    }
    
  • :not():选择不匹配某些条件的元素。例如,选择不是特殊类的段落:
    
    p:not(.special) {
    color: gray;
    }
    

3.2 盒模型 3.2.1 box-sizing box-sizing属性控制盒子模型的计算方式。使用box-sizing: border-box;可以让宽度和高度包括内边距和边框:

div {
  box-sizing: border-box;
  width: 100px;
  height: 100px;
  padding: 10px;
  border: 5px solid black;
}

3.2.2 盒模型计算 默认情况下,宽度和高度只包含内容的尺寸。使用box-sizing: border-box;后,宽度和高度将包括内边距和边框。

3.3 圆角 3.3.1 border-radius border-radius属性用于设置元素的圆角效果:

div {
  border-radius: 10px;
}

3.4 阴影效果 3.4.1 box-shadow box-shadow属性为元素添加阴影效果:

div {
  box-shadow: 10px 10px 5px rgba(0, 0, 0, 0.5);
}

3.4.2 text-shadow text-shadow属性为文本添加阴影效果:

p {
  text-shadow: 2px 2px 2px rgba(0, 0, 0, 0.5);
}
div {
  background-size: cover;
}
div {
  background-position: center center;
}
div {
  background-repeat: no-repeat;
}

3.6 动画和过渡 3.6.1 transition transition属性允许为元素的变化添加过渡效果:

div {
  transition: width 0.5s ease;
}
div:hover {
  width: 200px;
}

3.6.2 animation animation属性允许创建复杂和持续的动画效果,包括关键帧:

@keyframes example {
  from {background-color: red;}
  to {background-color: yellow;}
}
div {
  animation-name: example;
  animation-duration: 4s;
}

3.7 选择器和伪类 3.7.1 新的选择器

  • nth-child()
  • nth-of-type()
  • only-child
  • first-of-type 3.7.2 伪类
  • :hover
  • :active
  • :focus
  • :visited

3.8 文本效果 3.8.1 word-wrap word-wrap属性控制长单词或URL在换行时是否断开:

p {
  word-wrap: break-word;
}

四、CSS3布局案例分析 4.1 案例一:响应式导航菜单

nav {
  display: flex;
  justify-content: space-between;
}
nav ul {
  list-style: none;
  display: flex;
}
nav ul li {
  flex: 1;
  text-align: center;
}
.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: 10px;
}
.item {
  background: url('image.jpg') no-repeat center center;
  background-size: cover;
}

五、总结 CSS3提供了丰富的布局技术和新特性,这些特性使得网页设计更加灵活和高效。掌握这些特性,可以帮助开发者更好地实现复杂的布局和视觉效果,提升用户体验。