CSS3 设置字体自适应 font-size:xx rem

本文介绍了CSS3中新增的字体单位rem,它是相对于根节点(html)的大小进行计算的。文章详细解释了如何通过设置html节点的字体大小来实现rem单位的灵活运用,并提供了兼容旧版浏览器的解决方案。
  • CSS3新引入了一个字体单位(rem),rem是相对于根节点的(html节点)。在使用时我们可以这样写
html{font-size: 62.5%;}
/*62.5%是相对于16px计算得来的,相当于10个计量单位,为了后面计算字体大小*/

 

 

  • 但是问题来了,因为CSS3 IE6-8不支持,所以这样写会影响字体默认的大小,所以增加如下代码
html{font-size: 62.5%;}
body{font-size: 14px;font-size: 1.4rem;}
/*前面px为兼容老版本浏览器,rem为现代浏览器解析,px要在前面*/

 

注意:在后面要用到rem的地方,也需加上px

将以下代码修改为响应式布局修改页面分辨率时布局仍然保持原样,不出现滚动条<template> <div id="mainContainer" class="energy-platform"> <!-- 顶部标题 --> <div class="header"> <h1 class="company-name">XX公司</h1> <h2 class="platform-name">XX云综合管理平台</h2> <div class="gradient-bar"></div> <!-- 渐变导航条 --> </div> <!-- 应用菜单 --> <div class="app-container"> <el-row :gutter="20"> <el-col v-for="(app, index) in apps" :key="index" :xs="24" :sm="12" :md="6" :lg="6"> <div v-if="app.url==&#39;index&#39;" target="_blank" class="app-card" @mouseenter="hoverIndex = index" @mouseleave="hoverIndex = -1" @click="goIndex" :style="{ backgroundColor: hoverIndex === index ? &#39;#c5edff&#39; : &#39;#fff&#39; }"> <div class="app-icon"> <img :src="require(`../assets/image/${app.icon}.png`)" :alt="app.name" class="img-item2"> </div> <div class="app-title">{{ app.name }}</div> </div> <a v-else :href="app.url" target="_blank" class="app-card" @mouseenter="hoverIndex = index" @mouseleave="hoverIndex = -1" :style="{ backgroundColor: hoverIndex === index ? &#39;#c5edff&#39; : &#39;#fff&#39; }"> <div class="app-icon"> <img :src="require(`../assets/image/${app.icon}.png`)" :alt="app.name" class="img-item2"> </div> <div class="app-title">{{ app.name }}</div> </a> </el-col> </el-row> </div> </div> </template> <script> export default { name: "Home", data() { return { hoverIndex: -1, apps: [{ name: &#39;智慧应用&#39;, icon: &#39;el-icon-cpu&#39;, url: &#39;index&#39; }, { name: &#39;运行监测&#39;, icon: &#39;el-icon-monitor&#39;, url: &#39;&#39; }, { name: &#39;AI仿真&#39;, icon: &#39;el-icon-data-analysis&#39;, url: &#39;&#39; }, { name: &#39;数据中台&#39;, icon: &#39;el-icon-data-board&#39;, url: &#39;&#39; } ], redirect: undefined, devicePixelRatio: null, contentStyle: {} } }, methods: { goIndex() { this.$router.replace({ path: "Index" }) } } } </script> <style scoped> .energy-platform { box-sizing: border-box; padding: 8rem 10rem; width: 100%; /* height: 100vh; */ min-height: 100vh; background-image: url(&#39;../assets/image/bg.png&#39;); /* 背景图片设置 */ background-size: 100% 100%; background-position: center; background-repeat: no-repeat; filter: brightness(1); } .header { text-align: left; font-style: italic; color: #fff; font-size: 40px; } .company-name { margin-bottom: 30px; } .company-name, .platform-name { text-align: left; font-weight: bold; margin-bottom: 20px; color: #fff; } .gradient-bar { height: 4px; background: linear-gradient(to right, #29b0dd, #2aaed9, #ffffff); width: 260px; margin-bottom: 90px; } .app-container { margin: 0 auto; } .app-card { height: 260px; width: 80%; background: #fff; border-radius: 8px; display: flex; flex-direction: column; justify-content: center; align-items: center; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); margin-bottom: 20px; } .img-item2 { width: 100%; } .app-card:hover { transform: translateY(-5px); box-shadow: 0 6px 18px 0 rgba(0, 0, 0, 0.15); } .app-icon { font-size: 50px; color: #333; margin-bottom: 40px; transition: all 0.3s ease; } .app-card:hover .app-icon { color: #fff; } .app-title { font-size: 22px; font-weight: bold; color: #333; transition: all 0.3s ease; } .app-card:hover .app-title { color: #000; } /* 响应式调整 */ @media (max-width: 768px) { .company-name { font-size: 40px; } .platform-name { font-size: 20px; } .app-card { height: 120px; width: 100%; } .app-icon { font-size: 30px; margin-bottom: 10px; } .app-title { font-size: 16px; } .gradient-bar { margin-bottom: 40px; } } /* 响应式调整 */ @media (max-width: 1366px) { .energy-platform { padding: 150px 100px; } .app-card { width: 90%; } } /* 响应式调整 */ @media (max-width: 1024px) { .energy-platform { padding: 150px 200px; } .app-card { width: 100%; } } </style>
07-16
<style> :root { --sidebar-hover: #adcfe3; --sidebar-active: #5071d9; --content-bg: #f8f9fa; --header-bg: #3498db; --card-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); --primary-color: #3498db; --secondary-color: #8e44ad; --success-color: #2ecc71; --warning-color: #f39c12; --danger-color: #e74c3c; } body { font-family: "Arial","Microsoft YaHei","SimHei",sans-serif; background: #eff0f4; color: #333; display: flex; max-height: 100vh; overflow-x: hidden; } .sidebar { width: 250px; background: #ffffff; color: white; position: fixed; height: 910px; z-index: 1000; overflow-y: auto; transition: all 0.3s; border-radius: 20px; margin-top:20px; margin-bottom:20px; margin-left:20px } .sidebar-header { padding: 20px; background: rgba(0, 0, 0, 0.2); text-align: center; } .sidebar-header h3 { font-size: 1.5rem; margin-bottom: 0; } .sidebar-menu { padding: 25px 0; } .sidebar-menu ul { list-style: none; padding: 0; margin: 0; } .sidebar-menu li { margin-bottom: 5px; padding: 5px 5px; border-radius:50px; } ul li a { text-decoration: none; } .sidebar-menu a { display: flex; align-items: center; padding: 12px 20px; color: #333; text-decoration: none; transition: all 0.3s; } .sidebar-menu a:hover { background: var(--sidebar-hover); border-radius:50px; color: black; } .sidebar-menu a.active { background: var(--sidebar-active); border-radius:50px; color: white; } .sidebar-menu i { margin-right: 15px; font-size: 1.2rem; width: 25px; text-align: center; } .main-content { flex: 1; margin-left: 300px; margin-right: 50px; max-height: 100vh; display: flex; flex-direction: column; } .header { border-radius: 20px; color: white; padding: 15px 0; margin: 20px 20px 0 20px; box-shadow: var(--card-shadow); display:flex; justify-content:center; align-items:center; } .content-area { padding: 30px; flex: 1; } .card { background: #ffffff; border-radius: 12px; box-shadow: var(--card-shadow); margin-bottom: 25px; border: none; transition: transform 0.3s; overflow: hidden; } .card-header { background:#ffffff; border-radius: 12px 12px 0 0 !important; padding: 15px 20px; font-weight: bold; display: flex; align-items: center; } .history-card { display: flex; flex-direction: column; height: 410px; } .table-container { height: 100vh; overflow-y: auto; } .card-body { flex: 1; display: flex; flex-direction: column; padding: 0; height:375px; } .chart-container { position: relative; padding: 20px; } .data-table { table-layout: fixed; width: 100%; border-collapse: collapse; } .data-table th:nth-child(6), .data-table td:nth-child(6) { width: 28%; } .data-table th { padding: 12px 15px; text-align: center; background:#e2e6ed; } .data-table td { padding: 10px 15px; border-bottom: 1px solid #eee; text-align: center; } .data-table tr:hover { background-color: #f9f9f9; } .select-container { display: flex; gap: 15px; margin-bottom: 25px; flex-wrap: wrap; } .select-box { flex: 1; min-width: 200px; } #risk-table { width:10%; table-layout:fixed; } #th, td { width:calc(100% / 6); } .level-row { display: flex; justify-content:space-between; align-items: center; padding: 15px 0; } .level-row > div { flex:1; text-align:center; margin:0 10px; } .level-row:last-child { border-bottom: none; } .level-icon { flex: 0 0 60px; display: flex; justify-content: center; } .level-count { flex: 0 0 100px; text-align: center; font-size: 20px; font-weight: bold; color: #2c3e50; } .level-desc { flex: 1; text-align: left; padding-left: 15px; } .circle-btn { display: inline-flex; align-items: center; justify-content: center; width: 45px; height: 45px; border-radius: 50%; color: white; text-decoration: none; font-weight: bold; border: none; transition: all 0.3s; } .circle-btn:hover { transform: scale(1.1); box-shadow: 0 4px 8px rgba(0,0,0,0.2); } .circle-btn.risk { background-color: #e74c3c; } .circle-btn.subhealth { background-color: #f39c12; } .circle-btn.health { background-color: #27ae60; } .circle-btn.active { transform: scale(1.1); box-shadow: 0 0 0 3px rgba(0,0,0,0.2), 0 0 0 6px rgba(255,255,255,0.5); } .circle-btn a { color: white; text-decoration: none; } .table-title { padding: 15px 20px; font-weight: bold; background-color: #f8f9fa; border-bottom: 1px solid #dee2e6; } </style> </head> <body> <div class="sidebar"> <div class="sidebar-menu"> <ul> <li> <a href="/"> <i class="fas fa-heartbeat me-2"></i> <span>首页</span> </a> </li> <li id="register-link"> <a href="/register"> <i class="fas fa-sign-in me-2"></i> <span>登陆注册管理</span> </a> </li> <li> <a href="/general"> <i class="fas fa-folder"></i> <span>总体数据概况</span> </a> </li> <li> <a href="/clf" class="active"> <i class="fas fa-chart-pie"></i> <span>人员分级管理</span> </a> </li> <li> <a href="/hpa"> <i class="fas fa-bell"></i> <span>健康促进活动</span> </a> </li> <li id="blood-link"> <a href="/blood"> <i class="fas fa-chart-bar"></i> <span>血压数据统计</span> </a> </li> <li id="bmi-link"> <a href="/bmi"> <i class="fas fa-chart-bar"></i> <span>BMI数据统计</span> </a> </li> <li id="physical-link"> <a href="/physical"> <i class="fas fa-check-circle"></i> <span>体检信息统计</span> </a> </li> <li> <a href="/perfile"> <i class="fas fa-file-alt"></i> <span>个人健康档案</span> </a> </li> </ul> </div> </div> <div class="main-content"> <div class="row"> <div class="col-9"> <div class="header" style="background-color:#5071d9;"> <h1 class="mb-0">人员分级管理</h1> </div> </div> <div class="col-3"> <div id="user-info" class="header" style="background-color:#ffffff;"> </div> </div> </div> <div class="content-area"> <div class="row"> <div class="col-6"> <div class="select-container"> <div class="select-box"> <select id="year-month-select" class="form-select"> <option value="">加载中...</option> </select> </div> </div> <div class="level-row"> <div class="level-icon"> <button id="risk-btn" class="circle-btn risk active"> <i class="fas fa-exclamation-triangle"></i> </button> </div> <div class="level-count" id="num-risk">0</div> <div class="level-desc"> <h6 style="font-weight:bold;">风险</h6> <p class="small text-muted mb-0">二级/三级高血压</p> </div> </div> <div class="level-row"> <div class="level-icon"> <button id="unhealth-btn" class="circle-btn subhealth"> <i class="fas fa-tag"></i> </button> </div> <div class="level-count" id="num-unh">0</div> <div class="level-desc"> <h6 style="font-weight:bold;">亚健康</h6> <p class="small text-muted mb-0">血压BMI未在正常区间/体检指标存在异常</p> </div> </div> <div class="level-row"> <div class="level-icon"> <button id="health-btn" class="circle-btn health"> <i class="fas fa-heart"></i> </button> </div> <div class="level-count" id="num-health">0</div> <div class="level-desc"> <h6 style="font-weight:bold;">健康</h6> <p class="small text-muted mb-0">血压BMI正常、体检无异常</p> </div> </div> </div> <div class="col-6"> <div class="card"> <div class="chart-container"> <canvas id="deptChart" height="320"></canvas> </div> </div> </div> </div> <div id="table-wrapper"> <div class="card history-card"> <div class="card-header"> <span id="table-title">风险人员明细</span> <div class="ms-auto" style="width: 200px;"> <select id="dept-filter-select" class="form-select form-select-sm"> <option value="all">全部部门</option> </select> </div> <button id="export-risk-btn" class="btn"> <i class="fas fa-download me-2"></i>导出名单 </button> </div> <div class="card-body"> <div class="table-container" style="height:340px;"> <table class="data-table"> <tbody id="risk-table"> <tr><td colspan="7" class="text-center">加载中...</td></tr> </tbody> </table> </div> </div> </div> </div> </div> </div>改变窗口大小时内部组件会变化大小,是通过什么设定的
10-15
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值