flex布局justify-content: space-between的排版问题

本文介绍如何使用CSS Flex布局的justify-content属性实现元素的均匀分布,并提供了解决末尾中间留白,使元素靠左分布的技巧,通过给父容器使用伪元素占位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.div1{
            display: flex;
            justify-content: space-between;
            flex-wrap: wrap;
            flex-direction: row;
            width: 600px;
            background-color: #e92332;
        }
        .div1 div{
            width: 100px;
            height: 80px;
            margin: 50px;
            border-radius: 10px;
            text-align: center;
            background-color: yellow;
        }
    </style>
    <body>
<div class="div1">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
</div>
</body>

使用flex布局的justify-content: space-between属性,结果显示为:
在这里插入图片描述
解决末尾中间留白,使其靠左分布的方法:给父容器使用伪元素占位,宽度设置为一个30%即可。

.div1:after{
            content: '';
            width: 30%;
        }

在这里插入图片描述

<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> /* 轻奢风格基础设置 */ :root { --gold: #D4AF37; --light-gold: #E6D29E; --dark: #333333; --light: #F9F7F5; --gray: #E0E0E0; } .luxury-process { font-family: 'Helvetica Neue', Arial, sans-serif; max-width: 1200px; margin: 0 auto; padding: 40px 20px; background-color: var(--light); position: relative; overflow: hidden; } /* 装饰性元素 */ .luxury-process::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 4px; background: linear-gradient(90deg, var(--gold), transparent); z-index: 1; } .section-title { text-align: center; margin-bottom: 60px; position: relative; } .section-title h2 { font-size: 2.2rem; font-weight: 300; letter-spacing: 2px; color: var(--dark); text-transform: uppercase; margin-bottom: 15px; } .section-title::after { content: ""; display: block; width: 80px; height: 2px; background: var(--gold); margin: 0 auto; } /* 流程容器 */ .process-container { display: flex; justify-content: space-between; position: relative; } /* 连接线 */ .process-container::before { content: ""; position: absolute; top: 80px; left: 10%; width: 80%; height: 1px; background: var(--gray); z-index: 0; } /* 单个步骤样式 */ .process-step { flex: 1; text-align: center; padding: 0 20px; position: relative; z-index: 2; transition: all 0.4s ease; } .step-icon { width: 160px; height: 160px; margin: 0 auto 25px; border-radius: 50%; background: white; display: flex; align-items: center; justify-content: center; box-shadow: 0 8px 25px rgba(0,0,0,0.05); border: 1px solid var(--gray); overflow: hidden; transition: all 0.4s ease; } .step-icon img { width: 70%; height: auto; object-fit: contain; transition: transform 0.3s ease; } .step-content { padding: 0 15px; } .step-number { display: inline-block; width: 36px; height: 36px; line-height: 36px; background: var(--gold); color: white; border-radius: 50%; margin-bottom: 15px; font-weight: 300; } .step-title { font-size: 1.2rem; font-weight: 500; color: var(--dark); margin-bottom: 15px; letter-spacing: 1px; } .step-desc { font-size: 0.95rem; line-height: 1.7; color: #666; font-weight: 300; } /* 悬停效果 */ .process-step:hover { transform: translateY(-10px); } .process-step:hover .step-icon { box-shadow: 0 12px 30px rgba(212, 175, 55, 0.2); border-color: var(--light-gold); } .process-step:hover .step-icon img { transform: scale(1.05); } .process-step:hover .step-number { background: var(--dark); } /* 响应式设计 */ @media (max-width: 768px) { .process-container { flex-direction: column; } .process-container::before { display: none; } .process-step { margin-bottom: 40px; display: flex; align-items: center; text-align: left; } .step-icon { min-width: 100px; width: 100px; height: 100px; margin: 0 20px 0 0; } .step-content { padding: 0; } .step-number { position: absolute; top: 10px; left: 45px; } } </style> </head> <body> <!-- 流程模块开始 --> <div class="luxury-process"> <div class="section-title"> <h2>尊享服务流程</h2> </div> <div class="process-container"> <!-- 步骤 1 --> <div class="process-step"> <div class="step-icon"> <img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iIzMzMyI+PHBhdGggZD0iTTE5IDNINUMzLjkgMyAzIDMuOSAzIDV2MTRjMCAxLjEgLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6TTcgMTBoMTB2Mkg3em0wIDRoMTB2Mkg3eiIvPjwvc3ZnPg==" alt="咨询"> </div> <div class="step-content"> <span class="step-number">1</span> <h3 class="step-title">需求咨询</h3> <p class="step-desc">专业顾问一对一沟通,深入了解您的需求与期望,提供个性化解决方案。</p> </div> </div> <!-- 步骤 2 --> <div class="process-step"> <div class="step-icon"> <img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iIzMzMyI+PHBhdGggZD0iTTE5IDMuOWMtMS4xIDAtMi4xLjQtMi44IDEuMkwxMiA4LjFsLTQuMi0zLjlDNi45IDMuNCA1LjkgMyA0LjggM0MzLjMgMyAyIDQuMyAyIDUuOHYxMi40YzAgMS41IDEuMyAyLjggMi44IDIuOGgxMi40YzEuNSAwIDIuOC0xLjMgMi44LTIuOFY1LjhjMC0xLjUtMS4zLTIuOC0yLjgtMi45em0wIDE1LjJINC44VjUuOGgxNC40djEzLjN6Ii8+PHBhdGggZD0iTTE2LjIgOS43bC0xLjQtMS40LTQuMiA0LjItMS44LTEuOC0xLjQgMS40IDMuMiAzLjJ6Ii8+PC9zdmc+" alt="设计"> </div> <div class="step-content"> <span class="step-number">2</span> <h3 class="step-title">方案设计</h3> <p class="step-desc">设计师团队精心构思,融合现代美学与实用功能,打造专属设计方案。</p> </div> </div> <!-- 步骤 3 --> <div class="process-step"> <div class="step-icon"> <img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iIzMzMyI+PHBhdGggZD0iTTE5IDRINWMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tMiAxNEg3VjhoMTB2MTB6Ii8+PHBhdGggZD0iTTE1IDEwaDJ2MmgtMnpNMTUgMTNoMnYyaC0yek0xMCAxMGgzdjNIMTB6TTcgMTBoMnYySDd6TTcgMTNoMnYySDd6Ii8+PC9zdmc+" alt="实施"> </div> <div class="step-content"> <span class="step-number">3</span> <h3 class="step-title">专业实施</h3> <p class="step-desc">经验丰富的执行团队精密施工,确保每个细节完美呈现,品质严格把控。</p> </div> </div> <!-- 步骤 4 --> <div class="process-step"> <div class="step-icon"> <img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iIzMzMyI+PHBhdGggZD0iTTE3IDNoLTRjLS41NSAwLTEgLjQ1LTEgMXYxLjI5Yy0uNjkuMzUtMS4yNi44OC0xLjY4IDEuNTVsLTEuOTQtMS45NC0uNzEuNzEgMS45NCAxLjk0QzkuMDQgOC4xNCA5IDguMzIgOSA4LjVjMCAxLjEuOSAyIDIgMnMxLjktLjkgMi0yYzAtLjE4LS4wNC0uMzYtLjExLS41Mmw1LjE4IDUuMThjLS4xNi4wNy0uMzQuMTEtLjUyLjExLS41NSAwLTEtLjQ1LTEtMXYtMi41OWwtMi0yVjE4YzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0xLjI5Yy42OS0uMzUgMS4yNi0uODggMS42OC0xLjU1bDEuOTQgMS45NC43MS0uNzEtMS45NC0xLjk0Yy4wNy0uMTguMTEtLjM2LjExLS41NCAwLTEuMS0uOS0yLTItMi0uNTUgMC0xIC40NS0xIDF2Mi41OWwyIDJWNGMwLS41NS0uNDUtMS0xLTF6Ii8+PC9zdmc+" alt="交付"> </div> <div class="step-content"> <span class="step-number">4</span> <h3 class="step-title">完美交付</h3> <p class="step-desc">全面质量检测,专属交付仪式,提供持续维护支持,确保长期满意体验。</p> </div> </div> </div> </div> <!-- 流程模块结束 --> </body> </html> 把这段代码改成黑白灰色调的轻奢简约风格,不需要背景颜色
06-21
<template> <div class="login-container"> <div class="login-bg"></div> <el-card class="login-card"> <div class="logo-container"> <div class="logo"></div> <h2 class="login-title">系统登录</h2> </div> <el-form :model="loginForm" :rules="loginRules" ref="formRef" @submit.prevent="handleLogin" class="login-form" > <el-form-item prop="username"> <el-input v-model="loginForm.username" placeholder="请输入用户名" prefix-icon="User" size="large" class="input-item" /> </el-form-item> <el-form-item prop="password"> <el-input v-model="loginForm.password" type="password" placeholder="请输入密码" prefix-icon="Lock" show-password size="large" class="input-item" /> </el-form-item> <div class="button-group"> <el-button type="primary" class="login-btn" native-type="submit" :loading="loading"> 登 录 </el-button> <el-button class="reset-btn" @click="handleReset"> 重 置 </el-button> </div> </el-form> </el-card> </div> </template> <script setup lang="ts"> import { ref, reactive } from 'vue' import { useRouter } from 'vue-router' import { ElMessage, type FormInstance, type FormRules } from 'element-plus' import { loginApi } from '@/api/login' // 根据你的实际路径调整 const router = useRouter() const formRef = ref<FormInstance>() const loading = ref(false) // 登录表单数据 const loginForm = reactive({ username: '', password: '', }) // 表单验证规则 const loginRules = reactive<FormRules>({ username: [ { required: true, message: '请输入用户名', trigger: 'blur' }, { min: 3, max: 20, message: '长度在 3 到 20 个字符', trigger: 'blur' }, ], password: [ { required: true, message: '请输入密码', trigger: 'blur' }, { min: 6, max: 20, message: '长度在 6 到 20 个字符', trigger: 'blur' }, ], }) // 处理登录提交 const handleLogin = async () => { // 表单验证 const valid = await formRef.value?.validate() if (!valid) return loading.value = true try { // 调用登录API const { code, data, msg } = await loginApi(loginForm) if (code === 1) { // 登录成功处理 ElMessage.success('登录成功') // 存储token到localStorage localStorage.setItem('token', data.token) // 跳转到首页 router.push('/index') } else { // 其他错误处理 ElMessage.error(msg || '登录失败,请重试') } } catch (error: any) { // 401错误处理 if (error.response?.status === 401) { ElMessage.error('用户名或密码错误') } else { ElMessage.error('登录请求失败:' + (error.message || '未知错误')) } } finally { loading.value = false } } // 新增:处理重置表单 const handleReset = () => { formRef.value?.resetFields() } </script> <style scoped lang="scss"> .login-container { display: flex; justify-content: center; align-items: center; height: 100vh; position: relative; overflow: hidden; .login-bg { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%); z-index: 1; } &::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: url('https://images.unsplash.com/photo-1497366754035-f200968a6e72?ixlib=rb-4.0.3&auto=format&fit=crop&w=1950&q=80') no-repeat center center; background-size: cover; opacity: 0.1; z-index: 2; } } .login-card { width: 420px; padding: 40px 30px; border-radius: 16px; box-shadow: 0 12px 30px rgba(0, 0, 0, 0.25); z-index: 3; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); border: none; .logo-container { text-align: center; margin-bottom: 30px; .logo { width: 80px; height: 80px; margin: 0 auto 15px; border-radius: 50%; background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%); display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 10px rgba(37, 117, 252, 0.3); &::after { content: 'EM'; font-size: 28px; font-weight: bold; color: white; } } .login-title { text-align: center; margin-bottom: 5px; color: #2c3e50; font-size: 24px; font-weight: 600; letter-spacing: 1px; } } .login-form { .input-item { margin-bottom: 20px; :deep(.el-input__wrapper) { border-radius: 12px; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08); padding: 0 15px; height: 48px; &:hover { box-shadow: 0 2px 8px rgba(37, 117, 252, 0.2); } } } } .button-group { display: flex; gap: 15px; margin-top: 10px; .login-btn { flex: 1; height: 48px; font-size: 16px; font-weight: 500; letter-spacing: 2px; background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%); border: none; border-radius: 12px; box-shadow: 0 4px 10px rgba(37, 117, 252, 0.3); transition: all 0.3s ease; &:hover { transform: translateY(-2px); box-shadow: 0 6px 15px rgba(37, 117, 252, 0.4); } } .reset-btn { flex: 1; height: 48px; font-size: 16px; font-weight: 500; letter-spacing: 2px; background: #f5f7fa; color: #606266; border: none; border-radius: 12px; transition: all 0.3s ease; &:hover { background: #e4e7ed; color: #2c3e50; } } } } </style> 优化下样式美化下页面,可以保持原有的功能上,重构样式
最新发布
07-23
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值