[CSS]常见布局技巧

简介: [CSS]常见布局技巧

前言

  • 系列文章目录:
  • 根据视频和PPT整理
  • 视频及对应资料:
  • HTML CSS

1. margin负值的运用

多个盒子进行浮动,同时为每个盒子设置边框,会导致相邻盒子相接触的位置边框变粗。

此时可以使用margin将其值设置为负数,对上一个的边框进行覆盖,使得相邻位置的边框没有那么粗。

代码示例:

<style>
  div {
    float: left;
    width: 100px;
    height: 200px;
    margin-left: -2px;
    background-color: aquamarine;
    border: 2px solid black;
  }
</style>
<body>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
</body>

实现鼠标经过,盒子的边框颜色改变:

<style>
  div {
    position: relative;
    float: left;
    width: 100px;
    height: 200px;
    margin-left: -2px;
    background-color: aquamarine;
    border: 2px solid black;
  }
  div:hover {
    /* 由于后面的盒子覆盖了前面的盒子,所以要将前面的盒子层级提高 */
    /* 如果没有有定位,则加相对定位(保留位置) */
    /* position: relative; */
    border: 2px solid red;
    /* 如果有定位,则加z-index */
    z-index: 1;
  }
</style>
<body>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
</body>

2. 文字围绕浮动元素

实现下图效果,是利用浮动元素不会压住文字。

<style>
  .box {
    width: 300px;
    height: 70px;
    background-color: aquamarine;
  }
  .inner {
    /* 盒子进行浮动 */
    /* 由于浮动不会压住文字,可以实现文字在盒子右边环绕显示 */
    float: left;
    width: 120px;
    height: 70px;
    margin-right: 5px;
    background-color: cadetblue;
  }
</style>
<body>
  <div class="box">
    <div class="inner"></div>
    <span>hello world! hello world! hello world! hello world! </span>
  </div>
</body>

3. 行内块的巧妙运用

使用行内块元素实现下图效果:

<style>
    a {
      /* 取消 a 标签的默认样式 */
      color: #000;
      text-decoration: none;
    }
    .box {
      /* 行内块元素页面水平居中 */
      text-align: center;
    }
    .box a {
      display: inline-block;
      /* width: 36px; */
      height: 36px;
      /* 内边距 内容与左右边框的距离 */
      padding: 0 14px;
      background-color: #f7f7f7;
      border: 1px solid #ccc;
      font-size: 14px;
      /* 水平居中 */
      /* 继承父元素 */
      /* text-align: center; */
      /* 垂直居中 */
      line-height: 36px;
    }
    .box a:hover,
    .box .elp {
      background-color: #fff;
      border: none;
    }
    /* 输入框 */
    .box input {
      width: 45px;
      height: 36px;
      border: 1px solid #ccc;
      /* 取消获取焦点时的边框样式 */
      outline: none;
    }
    /* 确定按钮 */
    .box button {
      width: 60px;
      height: 36px;
      background-color: #f7f7f7;
      border: 1px solid #ccc;
    }
  </style>
  <body>
    <div class="box">
      <a href="#">&lt;&lt;上一页</a>
      <a href="#">1</a>
      <a href="#">2</a>
      <a href="#">3</a>
      <a href="#">4</a>
      <a href="#">5</a>
      <a href="#" class="elp">...</a>
      <a href="#">&gt;&gt;下一页</a>
      到第
      <input type="text">
      <button>确定</button>
    </div>
  </body>

4. CSS三角强化

实现下图效果:

三角形实现:

<style>
  .box1 {
    width: 40px;
    height: 80px;
    padding: 40px;
    background-color: aquamarine;
  }
  .box1 .inner {
    width: 0;
    height: 0;
    /* 顶部的边框可以撑开三角形的高度 */
    /* 上边框宽度调大 */
    border-top: 80px solid red;
    border-right: 40px solid black;
    /* 底部边框为0 可以不让三角形为等腰 */
    /* 底部和左边边框宽度为0 */
    border-bottom: 0px solid transparent;
    border-left: 0px solid transparent;
  }
</style>
<body>
  <div class="box1">
    <div class="inner"></div>
  </div>
</body>

案例效果实现:

<style>
  .box {
    width: 160px;
    height: 24px;
    border: 1px solid red;
    /* 文字居中 */
    text-align: center;
  }
  .left {
    /* 自绝父相 */
    position: relative;
    /* 浮动会覆盖盒子,但是不覆盖文字 */
    float: left;
    width: 90px;
    height: 100%;
    background-color: red;
  }
  .box i {
    position: absolute;
    top: 0;
    right: 0;
    width: 0;
    height: 0;
    /* 边框的颜色  只有右边框有颜色 白色*/
    border-color: transparent #fff transparent transparent;
    border-style: solid;
    /* 上右边框有宽度 */
    border-width: 24px 12px 0 0;
  }
</style>
<body>
  <div class="box">
    <span class="left">¥1650<i></i></span>
    <span class="right">¥5650</span>
  </div>
</body>

相关文章
|
1月前
|
前端开发 UED 容器
在 CSS 中使用 Flex 布局实现页面自适应时需要注意什么?
【10月更文挑战第22天】在使用 Flex 布局实现页面自适应时,需要对其基本原理和特性有深入的理解,同时结合具体的布局需求和场景,进行细致的调整和优化。通过合理的设置和注意事项的把握,才能实现理想的自适应效果,提升用户体验。还可以根据实际情况进行更深入的探索和实践,以不断提升 Flex 布局的应用能力。
|
1月前
|
前端开发 JavaScript 开发者
掌握 CSS 弹性布局(Flexbox):构建复杂页面布局的高效秘籍与实战案例
CSS弹性布局(Flexbox)是现代网页设计中构建复杂页面布局的高效工具。本文将深入浅出地介绍Flexbox的核心概念、使用技巧及实际应用案例,帮助读者快速掌握这一强大布局方法。
|
1月前
|
前端开发 容器
实现CSS品字布局
【10月更文挑战第27天】
|
2月前
|
前端开发 容器
使用 CSS Grid 布局实现响应式设计
【10月更文挑战第1天】使用 CSS Grid 布局实现响应式设计
67 4
|
2月前
|
前端开发 容器
前端技术分享:利用CSS Grid布局实现响应式设计
【10月更文挑战第1天】前端技术分享:利用CSS Grid布局实现响应式设计
|
3月前
|
前端开发 容器
css布局-弹性布局学习笔记
这篇文章是关于CSS弹性布局的学习笔记,详细介绍了flex容器和元素的相关属性,包括flex-direction、flex-wrap、flex-flow、justify-content、align-items、align-content以及order、flex-grow、flex-shrink、flex-basis、flex和align-self等,解释了这些属性在弹性盒子布局中的作用和用法。
|
3月前
|
JavaScript 前端开发
网页前端课程设计-【模仿】香港中文大学官网,轮播图及div+css布局,js的dom操作
这篇文章介绍了如何模仿香港中文大学官网进行网页前端课程设计,包括使用div+css布局、js的DOM操作以及实现轮播图等技术细节。
|
4月前
|
前端开发 安全 容器
CSS如何优雅实现卡片多行排列布局?
【8月更文挑战第24天】CSS如何优雅实现卡片多行排列布局?
194 3
|
4月前
|
前端开发 开发者 容器
探索现代Web开发中的CSS Grid布局技术
【8月更文挑战第29天】在数字时代的浪潮中,网页设计不断进化以适应日新月异的用户需求。CSS Grid布局技术作为一项革新性的前端工具,为设计师和开发者提供了前所未有的布局能力。本文旨在通过深入浅出的方式介绍CSS Grid的核心概念、基本用法以及在实际项目中的应用,帮助读者快速掌握这一强大的网页布局工具。
65 3