页头部分要怎么只通过媒体查询就能实现响应式布局
来源:3-2 作业题
慕仰3297879
2020-05-06 14:32:43
一旦我在max768下面把.head-title的样式设为隐藏就会把375的也覆盖掉,案例只教了用栅格系统实现,如果不用栅格系统要怎么实现?也要在html下面再写一层结构吗?请老师讲讲思路
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" type="text/css" href="css/base.css">
<link rel="stylesheet" type="text/css" href="css/index.css">
<title>demo</title>
</head>
<body>
<header class="sm-container">
<p class="head-title">imooc</p>
<span class="btn-bar" id="btn"></span>
<nav class="nav-item" id="nav-item">
<ul>
<li><a href="###" class="nav-link">前端</a></li>
<li><a href="###" class="nav-link">java</a></li>
<li><a href="###" class="nav-link">ios</a></li>
<li><a href="###" class="nav-link">Andriod</a></li>
<li><a href="###" class="nav-link">php</a></li>
</ul>
</nav>
</header>
<script type="text/javascript" src="js/flexible.js"></script>
<script type="text/javascript">
var flag =true;
var nav = document.getElementById('nav-item');
btn.onclick = function(){
if(flag){
nav.style.height = '165px';
flag = false
}else{
nav.style.height = 0;
flag = true
}
}
</script>
</body>
</html>
.sm-container {
width: 100%;
height: 1.5rem;
background-color: #B2C5CC;
color: #fff;
position: relative;
}
@media (max-device-width:768px) {
.sm-container{
width: 100%;
height: 1.5rem;
background-color: #B2C5CC;
color: #fff;
position: relative;
}
.head-title{
display: none;
}
}
@media (max-device-width:375px) {
.sm-container{
width: 100%;
height: 1.5rem;
background-color: #7EA6B1;
color: #fff;
position: relative;
}
.head-title{
font-size: 0.5rem;
text-align: center;
line-height: 1.5rem;
}
.btn-bar{
width: 0.5rem;
height: 0.5rem;
border: 1px solid #fff;
position: absolute;
right: 0.5rem;
top: 0.5rem;
cursor: pointer;
}
.nav-item{
width: 100%;
height: 0;
background-color: #7EA6B1;
text-align: center;
transition: height 0.5s;
}
.nav-item li{
border-bottom: 1px solid #eee;
}
.nav-link{
color: #fff;
line-height: 0.6rem;
}
}
1回答
同学你好,可以默认是以手机端为基础设置样式,然后通过媒体查询设置ipad端下的样式。老师这里给出一段示例代码,同学可以结合代码测试理解下。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <link rel="stylesheet" type="text/css" href="css/base.css"> <!-- <link rel="stylesheet" type="text/css" href="css/index.css"> --> <style> .sm-container { width: 100%; height: 1.5rem; background-color: #B2C5CC; color: #fff; position: relative; } /* 默认显示手机端 */ .head-title { height: 1.5rem; line-height: 1.5rem; text-align: center; font-size: 0.5rem; } #btn { position: absolute; top: 0; right: 20px; bottom: 0; margin: auto; width: 0.5rem; height: 0.5rem; border: 2px solid red; } .nav-item { position: absolute; top: 1.5rem; height: 0; width: 100%; overflow: hidden; text-align: center; background: #888; } .nav-item li a { color: #fff; display: block; line-height: 1rem; font-size: 0.4rem; border-bottom: 1px solid #eee; } @media (min-width: 768px) { .head-title, #btn { display: none; } .nav-item { position: static; background: none; height: 1.5rem; line-height: 1.5rem; } .nav-item li { display: inline-block; padding: 0 20px; } .nav-item ul a { border: none; line-height: 1.5rem; font-size: 0.6rem; color: #333; } } /* @media (max-device-width:768px) { .sm-container { width: 100%; height: 1.5rem; background-color: #B2C5CC; color: #fff; position: relative; } .head-title { display: none; } } @media (max-device-width:375px) { .sm-container { width: 100%; height: 1.5rem; background-color: #7EA6B1; color: #fff; position: relative; } .head-title { font-size: 0.5rem; text-align: center; line-height: 1.5rem; display: block; } .btn-bar { width: 0.5rem; height: 0.5rem; border: 1px solid #fff; position: absolute; right: 0.5rem; top: 0.5rem; cursor: pointer; } .nav-item { width: 100%; height: 0; background-color: #7EA6B1; text-align: center; transition: height 0.5s; } .nav-item li { border-bottom: 1px solid #eee; } .nav-link { color: #fff; line-height: 0.6rem; } } */ </style> <title>demo</title> </head> <body> <header class="sm-container"> <p class="head-title">imooc</p> <span class="btn-bar" id="btn"></span> <nav class="nav-item" id="nav-item"> <ul> <li><a href="###" class="nav-link">前端</a></li> <li><a href="###" class="nav-link">java</a></li> <li><a href="###" class="nav-link">ios</a></li> <li><a href="###" class="nav-link">Andriod</a></li> <li><a href="###" class="nav-link">php</a></li> </ul> </nav> </header> <script type="text/javascript"> (function() { 'use strict'; // dpr->scale = 1 / dpr var docEl = document.documentElement, viewportEl = document.querySelector('meta[name="viewport"]'), dpr = window.devicePixelRatio || 1, maxWidth = 768, minWidth = 0; dpr = dpr >= 3 ? 3 : (dpr >= 2 ? 2 : 1); docEl.setAttribute('data-dpr', dpr); docEl.setAttribute('max-width', maxWidth); docEl.setAttribute('min-width', minWidth); var scale = 1 / dpr, content = 'width=device-width, initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no'; if (viewportEl) { viewportEl.setAttribute('content', content); } else { viewportEl = document.createElement('meta'); viewportEl.setAttribute('name', 'viewport'); viewportEl.setAttribute('content', content); document.head.appendChild(viewportEl); } setRemUnit(); window.addEventListener('resize', setRemUnit); function setRemUnit() { var ratio = 18.75; var viewWidth = docEl.getBoundingClientRect().width || window.innerWidth; // console.log(viewWidth); if (maxWidth && (viewWidth / dpr > maxWidth)) { viewWidth = maxWidth * dpr; } else if (minWidth && (viewWidth / dpr < minWidth)) { viewWidth = minWidth * dpr; } docEl.style.fontSize = viewWidth / ratio + 'px'; } })(); </script> <script type="text/javascript"> var flag = true; var nav = document.getElementById('nav-item'); btn.onclick = function() { if (flag) { nav.style.height = '165px'; flag = false } else { nav.style.height = 0; flag = true } } </script> </body> </html>
祝学习愉快~
相似问题