青训营X豆包MarsCode 技术训练营第七课 | 豆包MarsCode AI 刷题

72 阅读3分钟

CSS布局技巧汇总及应用场景

1. 浮动布局(Float Layout)

应用场景
浮动布局常用于实现图文混排,让文字环绕在浮动元素周围,也用于创建多列布局。

实操实践

	<!DOCTYPE html>

	<html lang="en">

	<head>

	    <meta charset="UTF-8">

	    <meta name="viewport" content="width=device-width, initial-scale=1.0">

	    <title>浮动布局示例</title>

	    <style>

	        .container {

	            width: 80%;

	            margin: 0 auto;

	            overflow: hidden; /* 清除浮动 */

	        }

	        .box {

	            float: left;

	            width: 48%;

	            margin: 1%;

	            background-color: lightblue;

	        }

	    </style>

	</head>

	<body>

	    <div class="container">

	        <div class="box">浮动元素1</div>

	        <div class="box">浮动元素2</div>

	        <p>这是一些文本,将环绕浮动元素显示。</p>

	    </div>

	</body>

	</html>

2. 定位布局(Position Layout)

应用场景
定位布局常用于需要精确控制元素位置的情况,如弹出层、固定导航栏等。

实操实践

	<!DOCTYPE html>

	<html lang="en">

	<head>

	    <meta charset="UTF-8">

	    <meta name="viewport" content="width=device-width, initial-scale=1.0">

	    <title>定位布局示例</title>

	    <style>

	        .fixed-nav {

	            position: fixed;

	            top: 0;

	            width: 100%;

	            background-color: #333;

	            color: #fff;

	            text-align: center;

	            padding: 10px 0;

	            z-index: 1000; /* 确保导航栏在其他内容之上 */

	        }

	        .content {

	            margin-top: 60px; /* 为固定导航栏留出空间 */

	        }

	    </style>

	</head>

	<body>

	    <div class="fixed-nav">固定导航栏</div>

	    <div class="content">

	        <p>滚动页面查看效果,导航栏将始终固定在顶部。</p>

	        <!-- 这里可以添加更多内容 -->

	    </div>

	</body>

	</html>

3. 弹性盒子布局(Flexbox Layout)

应用场景
弹性盒子布局适用于需要灵活调整子元素排列顺序和分配空间的情况,如响应式布局、卡片布局等。

实操实践

	<!DOCTYPE html>

	<html lang="en">

	<head>

	    <meta charset="UTF-8">

	    <meta name="viewport" content="width=device-width, initial-scale=1.0">

	    <title>弹性盒子布局示例</title>

	    <style>

	        .container {

	            display: flex;

	            flex-wrap: wrap; /* 允许换行 */

	            justify-content: space-between; /* 子元素之间均匀分布 */

	        }

	        .box {

	            flex: 1 1 200px; /* 弹性系数、最小宽度、最大宽度 */

	            margin: 10px;

	            background-color: lightgreen;

	            text-align: center;

	            padding: 20px;

	        }

	    </style>

	</head>

	<body>

	    <div class="container">

	        <div class="box">弹性盒子1</div>

	        <div class="box">弹性盒子2</div>

	        <div class="box">弹性盒子3</div>

	        <div class="box">弹性盒子4</div>

	    </div>

	</body>

	</html>

JavaScript功能实现:动态表单验证

项目实例
实现一个动态表单验证功能,当用户输入内容时,实时检查输入是否合法(如必填项、邮箱格式等),并在页面上显示提示信息。

HTML

	<!DOCTYPE html>

	<html lang="en">

	<head>

	    <meta charset="UTF-8">

	    <meta name="viewport" content="width=device-width, initial-scale=1.0">

	    <title>动态表单验证</title>

	    <link rel="stylesheet" href="styles.css">

	</head>

	<body>

	    <form id="myForm">

	        <label for="name">姓名(必填):</label>

	        <input type="text" id="name" name="name">

	        <span id="nameError" class="error"></span>

	        <br>

	        <label for="email">邮箱(必填,格式检查):</label>

	        <input type="text" id="email" name="email">

	        <span id="emailError" class="error"></span>

	        <br>

	        <button type="submit">提交</button>

	    </form>

	    <script src="script.js"></script>

	</body>

	</html>

CSS(styles.css)

	.error {

	    color: red;

	    font-size: 12px;

	}

JavaScript(script.js)

	document.addEventListener('DOMContentLoaded', () => {

	    const form = document.getElementById('myForm');

	    const nameInput = document.getElementById('name');

	    const emailInput = document.getElementById('email');

	    const nameError = document.getElementById('nameError');

	    const emailError = document.getElementById('emailError');

	 

	    const validateName = () => {

	        if (nameInput.value.trim() === '') {

	            nameError.textContent = '姓名是必填项';

	            return false;

	        } else {

	            nameError.textContent = '';

	            return true;

	        }

	    };

	 

	    const validateEmail = () => {

	        const emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,6}$/;

	        if (emailInput.value.trim() === '') {

	            emailError.textContent = '邮箱是必填项';

	            return false;

	        } else if (!emailPattern.test(emailInput.value)) {

	            emailError.textContent = '邮箱格式不正确';

	            return false;

	        } else {

	            emailError.textContent = '';

	            return true;

	        }

	    };

	 

	    nameInput.addEventListener('input', validateName);

	    emailInput.addEventListener('input', validateEmail);

	 

	    form.addEventListener('submit', (event) => {

	        if (!validateName() || !validateEmail()) {

	            event.preventDefault(); // 阻止表单提交

	        }

	    });

	});

HTTP缓存策略分析:以Chrome浏览器为例

场景实践
在Chrome浏览器中,分析一个网页的HTTP请求和响应,了解缓存策略的使用情况。

步骤

  1. 打开开发者工具
    打开Chrome浏览器,按F12或右键点击页面选择“检查”打开开发者工具。

  2. 网络面板
    选择“网络(Network)”面板,确保“禁用缓存(Disable cache)”选项未被勾选,以便观察缓存的使用情况。

  3. 加载页面
    在浏览器地址栏输入要分析的网页URL,加载页面。

  4. 分析请求
    在网络面板中,观察各个资源的请求和响应。对于已缓存的资源,响应状态码通常为200(from cache)或304(Not Modified)。

  5. 查看响应头
    点击某个资源的请求,查看其响应头(Response Headers)。注意以下与缓存相关的字段:

    • Cache-Control:控制缓存的策略,如max-age表示资源在缓存中的最大有效时间。
    • Expires:指定资源过期的具体时间。
    • ETag:资源的唯一标识符,用于验证资源是否发生变化。
    • Last-Modified:资源最后修改的时间,用于判断资源是否发生变化。
  6. 分析缓存策略
    根据响应头中的字段,分析网页的缓存策略。例如,如果Cache-Control设置为max-age=3600,则表示资源在缓存中有效时间为1小时。如果服务器返回304状态码,表示资源未发生变化,客户端可以继续使用缓存中的资源。

通过以上步骤,可以深入了解Chrome浏览器中HTTP请求和响应的缓存策略,优化网页的加载速度和用户体验。