经典网页布局&浮动广告

Posted HUTEROX

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经典网页布局&浮动广告相关的知识,希望对你有一定的参考价值。

前言

这里主要是做一个小小的总结,关于一个页面如何使用css进行布局。如何使用js实现一个广告弹窗的效果。尤其是这个布局,我记得我当初很讨厌html的时候的最主要的原因是因为当时一开始学的时候是按照先html后css的节奏来的,这就导致,一开始我根本无法实现标签的摆放布局(这也是为什么我在学习几天之后就直接去做cs架构的原因之一,安全性差,界面开发难受(我不喜欢)至于为什么回来主要是为了实现我的个人博客网站),就显得很鸡肋,这个和你直接做软件的UI不一样,例如你使用python的tkinter 设计界面时当你生成了一个控件时就需要马上对其进行放置。而这在HTML当中不一样,事实上,我认为一个合格的标签最应该完成的不是有多么华丽的效果,而是出现在正确的位置上。 毕竟作为一个理工男我也不太能够做出比较华丽的界面,相比之下,我更喜欢简约风格。

css盒子模型

(那个图中的podding其实是padding我那个打错了)
在说明如何摆放布局时,需要先说明css最主要的盒子模型,这关系到如何正确的实现位置的摆放。

css工作流程

说到css就不得不说到其流程,这有助于理解css对标签的布局。
下面以一段css代码为例子:

<!DOCTYPE html>
<html lang="zn">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            width: 100px;
            height: 100px;
            background: cyan;
            border: 1px solid red;
        }
    </style>
</head>

<body>
    <div>

    </div>

</body>

</html>
        

定位

css需要找到需要被修饰的标签,关于如何定位,可以查看我写的另一篇博客。
CSS选择器(随笔)

现在定位到了div标签

生成盒子

当你定义了了高度和宽度之后,盒子的content部分就具有了高度和宽度,其余的部分默认是为0且不显示的,前面的那段代码我让它把边框显示了出来。你将看到红色的边框,宽度为1px注意此时的盒子的大小是101px X 101px原因是现在具有了边框的宽度。所以你现在注意到了,盒子的大小是会变的,如果你再设置内外边距的话。

现在相对于浏览器就是div的父标签(相当于)

通过外边距控制content的位置

这里我希望你还知道前面的那个图,那就是content是指内容,再盒子里面的内容,现在对于这个div标签来讲它现在独占了父容器的整个空间。我们通过内外边距改变的只是内容的位置,而不是盒子的位置。我们现在讲的是盒子里面的东西。

        div {
            width: 100px;
            height: 100px;
            background: cyan;
            border: 1px solid red;
            margin-top: 100px;
            margin-left: 100px;
        }

现在我对content进行移动



通过效果图和控制台我们就能发现,我们只是改变了content的位置。

通过内边距实现填充效果

        div {
            width: 100px;
            height: 100px;
            background: cyan;
            border: 1px solid red;
            margin-top: 100px;
            margin-left: 100px;
            padding-left: 50px;
        }

显示结果:

开发模式下:

这个效果在开发模式一目了然,它实现了填充的效果。

css盒子的放置

现在我们就要开始摆放盒子的位置了,这个主要通过盒子的position属性

position的相对布局

还原回刚刚开始的代码

        div {
            width: 100px;
            height: 100px;
            background: cyan;
            border: 1px solid red;
        }

现在加入属性,并进行放置

        div {
            width: 100px;
            height: 100px;
            background: cyan;
            border: 1px solid red;
            position: relative;
            left: 100px;
            top: 100px
        }


现在可以看到效果,但是这个定位是相对于默认位置来定位的。

position的绝对布局

这个是相对于父元素的盒子模型来定位的。

        div {
            width: 100px;
            height: 100px;
            background: cyan;
            border: 1px solid red;
            position:absolute;
            left: 100px;
            top: 100px
        }

这里的话由于只有一个标签所以效果都是一样的。但是在下面的经典布局的案例当中就会有区别。

position的固定布局

position: fixed;

这个的作用主要是让某一个标签保持不动,例如导航栏,或者广告。

它的定位是按照浏览器的页面进行定位的,也就是本例中的div的父容器。

网站的经典布局


实现效果如下:

那个广告先忽略,那个是后面加的。
代码如下

<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>我的首页</title>
    <!-- <link rel="stylesheet" href="index.css"> -->
    <style>
        .page {
            width: 96%;
            /*   这个居中 */
            margin: 0 auto;
            background: cyan;
        }
        
        header,
        main,
        footer {
            margin: 10px 0;
        }
        
        header {
            width: 100%;
            height: 150px;
            background-color: gold;
        }
        
        #logo {
            width: 20%;
            height: 60%;
            background-color: antiquewhite;
            position: relative;
            left: 1%;
            top: 5%;
        }
        
        #main {
            width: 100%;
            height: 600px;
            background-color: chartreuse;
        }
        
        #content {
            width: 74%;
            height: 100%;
            background-color: bisque;
            margin-right: 1%;
            float: left;
        }
        
        #sidebar {
            width: 25%;
            height: 100%;
            background-color: cadetblue;
            float: left;
        }
        
        footer {
            width: 100%;
            height: 100px;
            background-color: aquamarine;
            text-align: center;
        }
        
    </style>

</head>
<body>
    <div class="page">
        <header>

            <div id="logo">
            </div>

            <nav>
            </nav>

        </header>

        <div id="main">
            <div id="content">

            </div>

            <div id="sidebar">

            </div>

        </div>


        <footer>
            <br>
            <br> @Huterox
        </footer>

    </div>
</body>
</html>

页面广告

HTML&CSS部分

首先是它的HTML标签

    <div class="adv">
        <img src="adv.jpg" id="img_adv">
        <button id="adv_button">关闭</button>
        <p>广告位招租!</p>
    </div>

之后是它的css渲染

        .adv {
            width: 20%;
            height: 30%;
            background-color: rgb(135, 222, 161);
            position: fixed;
            top: 5%;
            left: 75%;
            text-align: center;
            opacity: 0.5;
            /* 设置透明度 */
        }
        
        #adv_button {
            width: 15%;
            height: 15%;
            position: absolute;
            left: 85%;
            top: 0%;
        }
        
        #img_adv {
            width: 100%;
            position: absolute;
            height: 100%;
            left: 0;
            top: 0;
        }
        
        .adv p {
            width: 50%;
            height: 10%;
            position: absolute;
            top: 35%;
            left: 25%;
            color: red;
            font-size: 150%;
        }

JS部分

首先第一个是控制按钮关闭页面。

    var CloseButton = document.getElementById("adv_button");
    CloseButton.addEventListener("click", function() {
        var advDiv = document.getElementsByClassName("adv")[0];
        advDiv.style.display = "none";

    });

之后是广告的出现,让广告在几秒后出现,而不是一来就出现,这个可以通过计时器完成。
在此之前得设置那个广告页面隐藏。

<script>
    var CloseButton = document.getElementById("adv_button");
    var advDiv = document.getElementsByClassName("adv")[0];
    advDiv.style.display = "none";
    CloseButton.addEventListener("click", function() {
        advDiv.style.display = "none";
    });

    function show_Adv() {
        advDiv.style.display = "block";
    };
    var showAdvIn = setInterval(() => {
        show_Adv();
        clearInterval(showAdvIn);//删除计时器
    }, 2000);
</script>

之后就实现了那个2秒后出现的效果,此外还可以实现那个广告图片轮播的效果通过那个计时器。
当然我这个只是通过设置display属性来实现效果,事实上可以通过父节点来对子节点删除,不过我这里的话那个广告标签就一个它自己,应该把它放在一个专门的广告标签区域内才好一点的。

以上是关于经典网页布局&浮动广告的主要内容,如果未能解决你的问题,请参考以下文章

div css布局网页如何实现网页自动适应屏幕高度和宽度

网页布局——float浮动布局

网页布局基础-浮动整理

求一段 广告固定在网页右下角的代码(CSS或JS都行),谢谢!!

深入理解CSS网页布局-理论篇

网页的布局方式