关于3-3编程练习

关于3-3编程练习

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
       * {
            margin: 0;
            padding: 0;
        }

        ul li
        {
            list-style: none;
        }
	body{
		min-width: 900px;
	}
        .header, .footer
        {
            font-size: 20px;
            width: 100%;
            height: 100px;
            background-color: black;
            color: white;
             text-align: center;
            float: left;
            line-height: 100px;
            min-width: 1300px;
        }


        .nav-pic
        {
            float: left;
        }

        .nav-title
        {
            float: right;
            font-size: 20px;
        }

            .nav-title ul li
            {
                float: left;
                margin-right: 40px;
            }

            	.nav-title a{
  		color: white;
  	}

  	.nav-title a:hover{
  		color: orange;
  	}

        .main
        {
            clear: both;
            height: 800px;
            min-width:600px;
            padding-left: 400px;
            padding-right: 300px;
        }
        .middle,.left,.right{
	float: left;
	position: relative;
	}
        .middle
        {
            width: 100%;
            height: 100%;
             background-color: #ADD8E6;
        }

         .left
        {
            width: 400px;
            height: 100%;
            background-color: yellow;
            /*方法1*/
            margin-left: -100%;
            left: -400px;

        }
        .right
        {
            width: 300px;
            height: 100%;
            background-color: pink;
             /*方法1*/
      /*      margin-left: -300px;
            right: -300px;*/
            /*方法2*/
            margin-right: -300px;
        }

        .middle img{
        	position: absolute;
        	left: 0;
        	right: 0;
        	top: 0;
        	bottom: 0;
        	margin: auto auto;
        }

        .right-content ul, .left-content ul
        {
            margin-top: 15px;
        }

        .right-content input
        {
            width: 100%;
            height: 60px;
            height: 35px;
            margin-bottom: 15px;
            border: none;
        }

            .right-content input[type=button]
            {
                background-color: red;
            }

        .left-content, .right-content
        {
            margin: 100px auto;
            width: 80%;
        }

            .left-content span
            {
                background-color: pink;
            }

            .left-content span, .middle-content span
            {
                line-height: 30px;
                margin-right: 15px;
            }

/*        .footer
        {
            text-align: center;
            line-height: 100px;
            float: left;
        }*/

            .footer ul
            {
                height: 100%;
                width: 50%;
                margin: 0 auto;
            }

                .footer ul li
                {
                    display: inline;
                    list-style: none;
                    margin: 0 10px 0 10px;
                }
    </style>
</head>
<body>
    <div class="header">
        <div class="nav-pic">
            <img src="http://img1.sycdn.imooc.com/climg//58c0d2d900016ce303000100.png">
        </div>
        <div class="nav-title">
        	<ul>
		<a href=""><li>课程</li></a>
		<a href="#"><li>职业路径</li></a>
		<a href="#"><li>实战</li></a>
		<a href="#"><li>猿记</li></a>
		<a href="#"><li>手记</li></a>
	</ul>
        </div>
    </div>
    <div class="main">
        <div class="middle">
	      <div class="middle-content">
	            <img src="http://img1.sycdn.imooc.com/climg//590037e00001fab706000400.jpg">
	        </div>
        </div>
        <div class="left">
            <div class="left-content">
                <h3>课程推荐</h3>
                <ul>
                    <li><span>职业路径</span>HTML5与CSS3实现动态网页</li>
                    <li><span>职业路径</span>零基础入门Android语法与界面</li>
                    <li><span>职业路径</span>ios基础语法与常用控件</li>
                    <li><span>职业路径</span>PHP入门开发</li>
                    <li><span>职业路径</span>Java入门开发</li>
                </ul>
            </div>
        </div>
        <div class="right">
            <div class="right-content">
                <h3>登录</h3>
                <ul>
                    <li>
                        <!-- <textarea placeholder="请输入登录邮箱/手机号"></textarea> -->
                        <input type="text" name="text" placeholder="请输入登录邮箱/手机号">
                    </li>
                    <li>
                        <!-- <textarea placeholder="6-16位密码,区分大小写,不能用空格"></textarea> -->
                        <input type="text" name="text" placeholder="6-16位密码,区分大小写,不能用空格">
                    </li>
                    <li>
                        <input type="button" name="button" value="按钮">
                    </li>
                </ul>
            </div>
        </div>
    </div>
    <div class="footer">
        <ul>
            <li>网站首页</li>
            <li>企业合作</li>
            <li>人才招聘</li>
            <li>联系我们</li>
            <li>常见问题</li>
            <li>友情链接</li>
        </ul>
    </div>
</body>
</html>

在设置right的时候,发现了两种方法,第一种是老师课程里所讲解的,第二种是自己实验的,对于双飞翼布局的原理一直有点模糊,麻烦老师给说明下,还有这两种实现方法的原理的差异!

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

这两种方式,无论是margin-left,还是margin-right,设置的负边距只要大于自身的宽度,就会在上面为它开辟一个空间。老师的做法是margin-left和right的结合实现的效果,直接使用margin-right也是可以的,但是都要结合定位和浮动去实现。这俩只是运用的技巧点不同而已。祝学习愉快!

  • 老师你好,有个疑惑,当left使用margin-left:-100%;的时候相当于移动了整个main的距离,也就是middle的距离,他移动到middle的最左端,然后再使用left:-400;填充main的左padding,但是关于right的移动,这个真心有点看不懂,使用margin-left的时候,是相对left,还是margin-right,是相对于父元素?但这两种方法真心都不知道他怎么上去的?求解答?
    2018-01-10 10:54:14
海纳百川_ 2018-01-10 11:53:20

同学,我这么理解的,希望对你有帮助:

排列在一行内的3个浮动元素,如果有一个设置了margin-right为负值的话,它会向右移动并和右边的元素重叠一部分,重叠的部分就是设置的margin-right的值,然后由于左浮动,会一起向左运动,就会在右侧留出一部分新的空间,新空间的宽度就是margin-right的值。

同理:

right元素在下面出现是因为设置浮动之后,上面的总宽度不够,被挤下的。它的margin还是和其他浮动的元素作为同一行起作用的。设置了margin-right是负的自身宽度后,在上面一行内的右侧就预留出了220px的宽度,足够它显示了。

而且在实际开发中,这种布局不常用的,还是普通布局多,我们适当了解就行了。

提问者 装完B就跑_真刺激 2018-01-09 17:52:20

说错了,不是双飞翼,是圣杯布局!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师