首页 > 其他分享 >手写一个满屏品字布局的方案

手写一个满屏品字布局的方案

时间:2024-11-22 11:06:45浏览次数:1  
标签:flex item 布局 满屏 padding width 品字 手写

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>品字布局</title>
    <style>
        body, html {
            height: 100%;
            margin: 0;
            padding: 0;
        }
        .container {
            display: flex;
            flex-direction: column;
            justify-content: center; /* 垂直居中 */
            align-items: center;     /* 水平居中 */
            height: 100%;
        }
        .row {
            display: flex;
            justify-content: space-around; /* 横向均匀分布 */
            width: 100%;
        }
        .item {
            width: 30%; /* 根据需要调整宽度 */
            height: 0; /* 使用padding-bottom维持宽高比 */
            padding-bottom: 30%; /* 正方形,可根据需要调整 */
            background-color: #f0f0f0; /* 示例颜色 */
            margin: 5px; /* 间距 */
            box-sizing: border-box; /* 包含padding和border */
        }


        /*  响应式布局,根据屏幕宽度调整布局  */
        @media screen and (max-width: 768px) {
            .row {
                flex-direction: column; /* 小屏幕下垂直排列 */
                align-items: center;
            }
            .item {
                width: 80%; /* 调整小屏幕下的宽度 */
                padding-bottom: 80%; /* 调整小屏幕下的高度 */
            }
        }

    </style>
</head>
<body>

<div class="container">
    <div class="row">
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
    </div>
    <div class="row">
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
    </div>
    <div class="row">
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
    </div>
    <!-- 可以继续添加更多的行 -->
</div>

</body>
</html>

关键点解释:

  • container: 使用 display: flexjustify-content: center, align-items: center 实现垂直和水平居中。
  • row: 使用 display: flexjustify-content: space-around 让每一行的元素横向均匀分布。
  • item: 使用 widthpadding-bottom 来控制宽高比,方便保持正方形或其他比例。box-sizing: border-box 确保 paddingborder 包含在元素总宽度和高度内。
  • 响应式布局: 使用 @media screen and (max-width: 768px) 在小屏幕下将布局改为垂直排列,并调整 item 的大小。
  • 满屏效果: html, body { height: 100%; }container { height: 100%; } 确保容器占满整个屏幕高度。

使用方法:

  1. 将代码保存为 HTML 文件 (例如 index.html)。
  2. 在浏览器中打开该文件。

进一步改进:

  • 可以通过 JavaScript 动态生成 rowitem 元素,实现更灵活的布局控制。
  • 可以使用 CSS Grid 或其他布局方案实现更复杂的品字布局变体。
  • 可以根据设计需求调整颜色、间距、宽高比等样式。

这个方案提供了基本的品字布局框架,并考虑了响应式设计。你可以根据具体需求进行调整和扩展。

标签:flex,item,布局,满屏,padding,width,品字,手写
From: https://www.cnblogs.com/ai888/p/18562375

相关文章

  • 说说bind、call、apply的区别?并手写实现一个bind的方法
    bind、call和apply都是JavaScript中用于改变函数执行上下文(即函数内部的this指向)的方法,它们的主要区别在于:call:立即调用函数,并接受参数列表作为后续参数。apply:立即调用函数,并接受一个参数数组作为参数。bind:创建一个新的函数,该函数的this值被绑定到指定的......
  • 你会手写原生js代码吗?
    是的,我会手写原生JavaScript代码。我可以创建各种功能的代码,包括:DOM操作:我可以创建、修改和删除HTML元素,以及处理事件,例如点击、鼠标悬停和表单提交。数据处理:我可以处理JSON数据、执行数组操作、使用正则表达式进行模式匹配,以及进行各种数据转换。异步操作:我......
  • 前端面试经验之手写节流
    思路:    第一步:直接封装方法。接收2个参数(fn:执行函数,time:设置默认执行时间)    第二步:声明定时器变量    第三步:return函数,函数内部里假设有定时器就return。没定时器就给定时器赋值延迟定时器,时间为 time    第四步:延迟定时器函数里......
  • 手写体识别Tensorflow实现
    简介:本文先讲解了手写体识别中涉及到的知识,然后分步讲解了代码的详细思路,完成了手写体识别案例的讲解,希望能给大家带来帮助,也希望大家多多关注我。本文是基于TensorFlow1.14.0的环境下运行的手写体识别Tensorflow实现1MNIST数据集处理2神经网络3Softmax函数3.1什么......
  • 如何手写实现 JSON Parser
    JSON.parse是我们在前端开发中经常会用到API,如果我们要自己实现一个JSON.parse,我们应该怎么实现呢?今天我们就试着手写一个JSONParser,了解下其内部实现原理。JSON语法JSON是一种语法,用来序列化对象、数组、数值、字符串、布尔值和null。语法规则如下:数据使用名/值对表示。......
  • PyTorch 手写字符识别
    PyTorch手写字符识别我们使用MNIST数据集对建立的卷积神经网络进行了训练,并加载测试集进行测试,最终的识别精度达到了99%。但是官方和网上的测试流程只是演示最终的测试结果,没有很直观的告诉我们怎么在项目中使用他。我们学习机器学习和人工智能的目的不是跑一个官网的演示程......
  • 花 5 分钟自己构建手写数字识别项目,这是一个完全体,可以识别你自己的图片
    大家好啊,我是董董灿。手写数字识别项目之前写过相关的文章,但是只介绍了这个项目的背景,并且给出了源码。后来有很多朋友反馈,按照源码自己设计的模型,虽然可以很好的识别出给定数据集中的图片,但是自己手写的数字却很难识别出来。这个问题被我解决后,给一部分朋友发过最新的源码,......
  • PyTorch实战深度学习——用CNN进行手写数字识别
    用CNN进行手写数字识别---计算机专业研究生的代码第一课,相当于”HelloWorld“,不管以后选择什么研究方向,都值得一看,欢迎大家留言交流学习!下面手把手教大家一步一步实现该任务:1.环境准备首先呢,您需要确保安装了PyTorch库。如果还没有安装,可以使用以下命令进行安装,这里默认......
  • call(),bind(),apply(),的区别和手写
    1.call(),bind(),apply()的区别call(),bind(),和apply()是JavaScript中用于改变函数执行上下文(即this的指向)的方法,它们之间有一些区别:call():call()方法允许你调用一个具有指定this值的函数,并且允许你传递一个参数列表。它的语法是function.call(thisArg,ar......
  • 【造轮子】qiankun详解和手写
    说到微前端,现在最火的方案就是qiankun。qiankun的特点是易用性和完备性很高。说白了就是能很方便、快速的接入,同时bug少,功能强大。介绍微前端已经火了一段时间了,就不介绍了,直接贴图得了。话不多少,本次主要做两件事情:拆解和解析qiankun源码尝试qiankun造轮子分析qi......