1. 程式人生 > >width值為auto和100%的不同

width值為auto和100%的不同

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style type="text/css">
        .outer{
            width:200px;
            height:100px;
            border:1px solid black;
            margin:20px;
        }
        #inner-100percent{
            width: 100%;
            height:100px;
            background: darkcyan;
        }
        #inner-auto{
            width:auto;
            padding:0px 10px;
            height:100px;
            background:salmon;
        }
    </style>
</head>
<body>
<div class="outer">
    <div id="inner-100percent">inner-100percent</div>
</div>
<div class="outer">
    <div id="inner-auto">inner-auto</div>
</div>
<span>你可以通過點選下方按鈕觀察inner-100percent盒子的整體寬度變化</span>
<button>click here</button>
<script>
    var inner=document.getElementById('inner-100percent');
    var flag=false;
    var btn=document.getElementsByTagName('button');
    function add() {
        if(flag){
            inner.style.padding='0px 10px';
            flag=false;
            console.log(1);
        }else{
            inner.style.padding='';
            console.log(2);
            flag=true;
        }
    }
    btn[0].addEventListener("click",add);
</script>
</body>
</html>
<!-- 此demo演示width值分別為auto和100%時對width本身的影響 -->
<!-- #1 width值預設為auto,設定百分比時相對父元素寬度 -->
<!-- #2 width值為100%時,寬度其實是一個定值 -->
<!-- #3 不論width值為auto還是100%,盒子整體寬度=margin-left + padding-left + content(width值) + padding-right + margin-right-->
<!-- #4 但由於為100%時是定值,所以子div會無視父div寬度的限制,仍然以父元素100%寬度存在,加上margin和padding的寬度,子元素內容溢位-->
<!-- #5 而當width為auto時,子元素content寬度會根據父元素寬度以及margin和padding寬度調節自身寬度 -->

<!-- 偶然習得getElementsByClassName和getElementByID 獲取的東西是不一樣的 -->
<!-- 前者獲得的是元素陣列,後者獲取的單個元素物件 -->

demo在這裡