【JAVA】CSS3伸缩盒案例、响应式布局、BFC

1.CSS3伸缩盒案例

效果:用伸缩盒模型

复制代码
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
        * { 
        font-family: Arial; 
        font-size: 14px; 
        margin: 0; 
        padding: 0; 
        border: none; 
    }
    a { text-decoration: none; }
    ul { list-style: none; }
    /* 因为body,html内都没有内容,所以默认没有宽高,html找视口 */
    html,body{
      width: 100%;
      height: 100%;
    }
    body{
      background-image: url('./image/bg.jpg');
      background-repeat: no-repeat;
      background-size: cover;
    }
    .page-header
    {
      height: 70px;
      background-color:  rgba(0, 0, 0, 0.7);
      padding: 0 20px;
      display: flex;
      justify-content: space-between;
      align-items: center;
    }
    .page-header-nav{
      display: flex;
    }
    .page-header-nav li a{
      color: white  ;
      border: 1px white solid;
      border-radius: 8px;
      padding: 10px;
      margin: 20px;
      font-size: 20px;
    }
    .content{
      display: flex;
      /* 100vh为视口高度100% */
      /* 注意:1'-'号旁边要有空格,2如果没有内容区高度margin:auto不起作用 */
      height: calc(100vh - 70px);
    }
    .content-nav{
      width: 1000px;
      height: 300px;
      background-color: rgb(9, 131, 238);
      margin:auto;
      display: flex;
    }
    .content-nav .item{
      justify-content: space-evenly;
      background-color: rgb(239, 144, 20);
      width: 180px;
      height: 200px;
      margin: auto;
      /* 调整的图片太大,默认拉伸,把侧轴方向长度顶满了 */
      align-items:center;
      display: flex;
      flex-direction: column;
      /* 过渡 */
      transition: 0.3s linear;
      /* 鼠标变小手 */
      cursor:pointer;
    }
    .content-nav .item:hover{
        box-shadow: 0px 0px 20px gray;
    }
    /* 不能在.content-nav .item{}里面加font-size,因为*{}里面设置过font-size,给了span默认的font-size */
    .content-nav .item span{
      font-size: 20px;
    }

    .content-nav .item:nth-child(1){
      background-color: aqua;
    }
    .content-nav .item:nth-child(2){
      background-color: rgb(201, 171, 19);
    }
    .content-nav .item:nth-child(3){
      background-color: rgb(44, 16, 223);
    }
    .content-nav .item:nth-child(4){
      background-color: rgb(239, 5, 227);
    }
    .content-nav .item:nth-child(5){
      background-color: rgb(225, 145, 16);
    }
  </style>
</head>
<body>
<header class="page-header">
<a href="#" alt="logo">
  <img src="./image/logo.png">
</a>
<ul class="page-header-nav">
  <li><a href="#" >A校区</a></li>
  <li><a href="#" >B校区</a></li>
  <li><a href="#" >C校区</a></li>
  <li><a href="#" >D校区</a></li>
</ul>
</header>
<div class="content">
  <div class="content-nav">
    <div class="item item1">
      <img src="./image/item1.png">
      <span>我的邮箱</span>
    </div>
    <div class="item item2">      <img src="./image/item1.png">
      <span>我的邮箱</span></div>
    <div class="item item3">      <img src="./image/item1.png">
      <span>我的邮箱</span></div>
    <div class="item item4">      <img src="./image/item1.png">
      <span>我的邮箱</span></div>
    <div class="item item5">      <img src="./image/item1.png">
      <span>我的邮箱</span></div>
  </div>
</div>
</body>
</html>

用定位居中(高度存在)

父元素position:relative

子元素:position:absolute

top:0

bottom:0

left:0

right:0

margin:auto

2 响应式布局

2.1 媒体类型

复制代码
 /* 只有在屏幕才应用的样式 */
    @media screen {
      
    }
     /* 只有打印机才应用的样式 */
    @media print {
      div{
        font-size: large;
      }
      /* @media没有提高优先级,所以样式要放到其他样式定义才生效 */
      @media all {
        
      }

2.2 媒体特性

复制代码
   /* 检测视口的宽度大于等于900px,应用该样式 */
  @media(min-width:900px){

  }
    /* 检测屏幕的宽度大于等于900px,应用该样式 */
  @media(device-width:900px){

}
/* 检测视口高度等于900px,应用该样式 */
@media(height:900px){

}

2.3 运算符

复制代码
    /* 且运算符 */
  @media(min-width:900px) and (height:900px){

  }
  /* 或运算符 */
  @media(device-width:900px) or (min-width:900px){

}
/* 否定运算符 */
@media not screen{

}
/* 肯定运算符 */
/* 老IE浏览器看见only会跳过该段 */
@media only screen and (min-width:900px){

}

2.4 常用阈值

复制代码
   /* 超小屏幕 */
@media screen and  (max-width:500px) {
  div{
    background-color: aqua;
  }
}
/* 中等屏幕 */
@media (min-width:500px) and  (max-width:1000px) {
  div{
    background-color: rgb(60, 237, 6);
  }
}
/* 大屏幕 */
@media (min-width:1000px) and  (max-width:1500px) {
  div{
    background-color: rgb(232, 240, 7);
  }
}
/* 超大屏幕 */
@media screen and (min-width:1500px)  {
  div{
    background-color: rgb(231, 13, 177);
  }
}

3 BFC

BFC 全称:Block Formatting Context, 名为 "块级格式化上下文"。

一个"功能"。默认关闭,满足条件打开

display:table变为表格元素

display:flow-root 副作用最低

相关推荐
excel5 小时前
ES6 中函数的双重调用方式:fn() 与 fn\...``
前端
可乐爱宅着6 小时前
全栈框架next.js入手指南
前端·next.js
你的人类朋友7 小时前
什么是API签名?
前端·后端·安全
会豪9 小时前
Electron-Vite (一)快速构建桌面应用
前端
中微子9 小时前
React 执行阶段与渲染机制详解(基于 React 18+ 官方文档)
前端
唐某人丶9 小时前
教你如何用 JS 实现 Agent 系统(2)—— 开发 ReAct 版本的“深度搜索”
前端·人工智能·aigc
中微子9 小时前
深入剖析 useState产生的 setState的完整执行流程
前端
遂心_10 小时前
JavaScript 函数参数传递机制:一道经典面试题解析
前端·javascript
小徐_233310 小时前
uni-app vue3 也能使用 Echarts?Wot Starter 是这样做的!
前端·uni-app·echarts
RoyLin10 小时前
TypeScript设计模式:适配器模式
前端·后端·node.js