首页 > 其他分享 >html+css:“圣杯布局”的设计案例

html+css:“圣杯布局”的设计案例

时间:2023-09-07 16:47:26浏览次数:38  
标签:box right 圣杯 center 100% html margin css left

一、什么是圣杯布局

圣杯布局:左右两个盒子固定宽度, 中间盒子自适应

 

二、圣杯布局的设计原则:

我们现在来思考自适应这个问题,其本质就是 left 和 right 覆盖一整个大的center,

然后center使用padding把内容左右留出left和right相应的宽度。

可是,现在如何来覆盖呢?

这里使用 margin + 负值 的策略,margin-left:-100%,表示移动到最右侧,而margin-right: -100% 表示移动到盒子的最左侧

然后使用  box-sizing: border-box; 对center时添加padding时不会撑开盒子的大小!!

 

 

三、整体的设计思路:

1. 整个盒子宽度固定下来;

2. 里面三个子盒子 ,依次是center,left,right,对其设置浮动;

3. center盒子width设置100%,left和right盒子设置为固定的px值;

4. 对left这边,margin-right: -100%,往左边移动,另外对right这边,margin-right:100%,往右边移动

5. 对center设置 padding-left: 200px;box-sizing: border-box; padding-right: 100px; 避免覆盖里面的内容,这个其实很简单。

 

四、下面是完整的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>

        .box{
            width: 80%;     /* %相对单位,相对于盒子的宽度来决定*/
            height: 200px;
            border: 1px solid #000;
            margin: 100px auto;
        }
        .child{
            height: 200px;
            float: left;
        }
        .center{
            width: 100%;
            background-color: skyblue;
            padding-left: 200px;
            box-sizing: border-box;
            padding-right: 100px;
        }
        .left{
            width: 200px;
            background-color: pink;
            margin-left: -100%;
        }
        .right{
            width: 100px;
            background-color: green;
            margin-right: -100px;
        }
    </style>
    <!-- 

        圣杯布局:左右两个盒子固定宽度, 中间盒子自适应

        1、结构布局比较特殊:   center的盒子放在最前面
        2、通过给左盒子margin-left: -100%;  右盒子margin-left: -右盒子宽度 ,让左右俩盒子在正确的位置
        3、第2步会导致中间盒子被覆盖。所以给中间盒子加padding-left 和padding-right 和box-sizing: border-box;
     -->
</head>
<body>
    <div class="box">
        <div class="child center">center </div>
        <div class="child left">left</div>
        <div class="child right">right</div>
    </div>


</body>
</html>

 

标签:box,right,圣杯,center,100%,html,margin,css,left
From: https://www.cnblogs.com/qwe-asd-zxc-nm/p/17685331.html

相关文章

  • 流程全局引入外部JS、CSS
    全局引入,所有流程   E9如果在代码块里面这样:<script type="text/javascript" src="/js/layui-v2.8.13/layui/layui.js"></script>是引入不了的。  如果想单独在某个流程引入,如下: ......
  • 爬虫系统的核心:如何创建高质量的HTML文件?
    在网页抓取或爬虫系统中,HTML文件的创建是一项重要的任务。HTML文件是网页的基础,包含了网页的所有内容和结构。在爬虫系统中,我们需要生成一个HTML文件,以便于保存和处理网页的内容。在这种情况下,可以使用Java函数来实现将爬取到的网页内容保存为HTML文件的功能。具体来说,当爬虫系统......
  • Ext.form.HtmlEditor获取和清空数据的方法
    下面是从网上拷的一段代码,主要是对其进行注解以便理解Ext.form.HtmlEditor获取和清空数据的方法<script>02.varfaxWin;03.Ext.onReady(function(){04.varform2=newExt.form.FormPanel({05.labelAlign:'top',06.frame:tr......
  • Javascript 中对HTML编码和解码的方法
    String.prototype.HTMLEncode=function(){vartemp=document.createElement("div");(temp.textContent!=null)?(temp.textContent=this):(temp.innerText=this);varoutput=temp.innerHTML;temp=null;returnoutput;}String.prot......
  • html+css:<a>中嵌入<img>,实现图片链接
    这个很好理解,记住<a>中不仅可以写标签,还可以嵌入文字。现在效果如下,在<a>中嵌入了<img>,同时又嵌入了<p>,点击图片和文字段落,其都会直接来进行跳转。这个是非常重要的,一点也不难,耐心做下去。  ......
  • html+css:文章居中,图片居中
    我们平常要涉及很多居中,现在这个要理解一、文字内容居中如下,其宽度居中采用text-align,但其高度居中,则让块高度,和行高度保持一致,此时就可以实现宽度居中 二、图片居中于浏览器,img作为行内块元素是无法实现的!img作为行内块元素,其有行的性质,此时margin是没有效果的,如下图。......
  • 10 个 效果不错的值得收藏的 css 代码片段
    10个css代码片段以下这10个常用的css代码片段值得收藏,都可以用于平常的业务代码当中。1.点点点加载中效果这是一个兼容性不错的用户体验很棒的点点点加载效果,实现思路如下:使用自定义的标签元素dot。将dot元素设置为内联元素(display:inline-block),并设置溢出隐藏(over......
  • 1.HTML开发--个人网页:创建一个个人网页,包括个人简介、联系信息和照片
    创建一个个人网页是一个很好的方式来展示你自己,你可以在上面分享个人信息、联系方式以及你的兴趣爱好。以下是一个简单的HTML模板,你可以基于它创建你自己的个人网页:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=......
  • 借助html2canvas下载图片,有滚动条的情况显示不全的问题
    我自己的遇到的情况是将页面的一个小窗口里边的内容生成图片下载,试了网上搜到的几个方法都没有生效,最后自己用了个取巧的方法:通过调整overflow-y来解决这个问题。downloadItem(){consttargetDom=document.getElementById(`image-${this.dialogNo}`)targetDo......
  • css---3d翻转
    简单的一个3d翻转的动画特效:<!doctypehtml><htmllang="en"><head><metacharset="UTF-8"><title>Document</title><styletype="text/css">.main-img{width:800px;margin:50pxauto0;overflow:......