给form和button设置了同样的width,都未设置他们border时,为什么显示长度不一样呢?

给form和button设置了同样的width,都未设置他们border时,为什么显示长度不一样呢?

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>这是一个HTML文件</title>
	<style type="text/css">
		*{
			margin: 0;
			padding: 0;
		}

		.bodybody{
			width:100%;
			margin-top: 100px;
			margin-bottom: 80px;
		}

		.headernav li,.footernav li,.left .left2list,.left .left1list{
			list-style: none;
		}

        .header{
            background:#000;
            width: 100%;
            height: 100px;
            min-width: 800px;
            position: fixed;
            top:0;
        }

        .pic{
			background:url("http://img1.sycdn.imooc.com/climg//59093e9c00016ce303000100.png") no-repeat;
			width:300px;
			height:100px;
			float:left;
		}

		.headernav{
			float: right;			
		}      

		.headernav li{
			line-height:100px;
			color:#fff;
            float:left;
            margin-right:40px; 
		}

		.left{
			width: 60%;
			height: 600px;
			background: #9cf;
            float: left;
		}

		.left1{
			float: left;
			margin-top:70px;
			margin-left: 110px;
			height: 10px;
			line-height: 40px;
		}

		.left1list span{
			background: pink;
		}

		.left2{
			float: left;
			margin-top:70px;
			margin-left: 140px;
			list-style:none;
			line-height: 40px;
		}

		.bodybody .middle{
			width: 1%;
			height: 600px;
			background:#f9c;
			float:left;
		}
        
        .bodybody .right{
           width: 39%;
           height: 600px;
           background: #9cf;
           float:right;
        }

		 .footer{
            width: 100%;
            height: 80px;
            background: #000;
            position: fixed;
            bottom:0;
        }

         .footernav{ 	  
         	text-align:center;
         }

         .footernav li{
         	display:inline-block;  
         	color:#fff;        	
         	line-height:80px;  
         	margin:0 20px;
         }


         /*input::-webkit-input-placeholder{
            color:#999;
        }  这是因为不同浏览器解析的原因
         */

        .form{
        	color: #999;
            display: block;
            width: 150px;
            height: 25px;
            /*border: 1px solid #eee;*/
        }

        .button{
        	width:150px;
        	height:25px;
        	background: pink;
        	display: block;
        	/*border: 1px solid #eee;*/
        }

        .login{
        	margin-top:70px;
        	margin-left:70px;
        	line-height: 30px;
        }

        h2,.form,.button{
            margin: 20px;
        }
        	        
	</style>
</head>
<body>
	<div class="header">
		<div class="pic"></div>
		<ul class="headernav">
			<li>课程</li>
			<li>职业路径</li>
			<li>实战</li>
			<li>原文</li>
			<li>手记</li>
		</ul>
	</div>


	<div class="bodybody">
		<div class="left">
			<div class="left1">
				<h2>课程推荐</h2>
			    <ul class="left1list">
			    	<li><span>职业路径</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实现动态网页</li>
			    	<li><span>职业路径</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实现动态网页</li>
			    	<li><span>职业路径</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实现动态网页</li>
			    	<li><span>职业路径</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实现动态网页</li>
			    	<li><span>职业路径</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实现动态网页</li>
			    </ul>
			</div>

			<div class="left2">
				<h2>相关课程</h2>
			    <ul class="left2list">
			    	<li>HTML CSS JAVASCRIPT</li>
			    	<li>HTML5 CSS3 JAVASCRIPT</li>
			    	<li>移动端基础 移动APPA开发</li>
			    </ul>
			</div>
		</div>

		<div class="middle"></div>

		<div class="right">
			<div class="login">
			<h2>登录</h2>
			<input type="text" class="form" placeholder="请输入邮箱或手机">
			<input type="password" class="form" placeholder="请输入6-16位密码">
			<input type="submit" class="button"  value="登录">
		    </div>
		</div>
	</div>


	<div class="footer">
		<ul class="footernav">
			<li>网站首页</li>
			<li>企业合作</li>
			<li>人才招聘</li>
			<li>联系我们</li>
			<li>常见问题</li>
			<li>友情链接</li>
		</ul>
	</div>

</body>
</html>

正在回答 回答被采纳积分+1

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

2回答
好帮手慕码 2019-04-19 15:28:13

同学你好!

你的理解是正确的。当input type为submit的(这里指的是按钮button)时候,它的边框是包含在宽度中的:

http://img1.sycdn.imooc.com//climg/5cb9779f00018aa504570394.jpg

http://img1.sycdn.imooc.com//climg/5cb977d30001dc7a04310334.jpg

所以它的宽度想要设置的与form一样 就需要设置154px,y因为边框是2px的宽度,左右共4px。

而form的宽度如同学所说一样~

如果帮助到了你 望采纳 祝学习愉快~

好帮手慕码 2019-04-19 14:34:35

同学你好!

这是因为input有一个默认的边框宽度(标签自带):

http://img1.sycdn.imooc.com//climg/5cb96b620001037104190287.jpg

且按钮颜色是pink所以会不太好观察,把他颜色设置为和input一样的时候就好观察一点:

http://img1.sycdn.imooc.com//climg/5cb96bd30001116004360196.jpg

http://img1.sycdn.imooc.com//climg/5cb96be30001a44c02410197.jpg

如果帮助到了你 望采纳  祝学习愉快~

  • 提问者 Di1860 #1
    老师,是不是给button设置的边框是包含在给button设置的width里面的,所以为了对齐需要设置152px;而form的width只是他的长度,不包含边框,所以设置150px,然后如果给form设置了边框,这个时候其实整个form真正展现的长度应该是width+两个border的长度。我这样理解对不对呢?
    2019-04-19 15:17:05
  • 提问者 Di1860 #2
    根据您的回答,当我给form和button都不设置border的时候。因为.form其实就是input,此时我在CSS中给.form设置了width:150px是什么意思呢,是不是150px=146+4(input的自带边框),展示效果也是150px;然后button没有自带边框,所以在CSS里给Button设置width:150px,我理解它展示的就应该是150px。那既然不管怎么算,展示效果都是150px,为什么我上面的程序显示出来的form和button确实长度不一样
    2019-04-19 15:21:54
  • 提问者 Di1860 #3
    还是说他们的显示宽度是一样的?
    2019-04-19 15:23:13
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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