web前端——实例中学习css,javascript

  最近闲暇时候在研究前端的样式和js,以前都是从w3school上看看那些选择器和DOM操作方法很少去实际做demo来研究,做的过程当中才真切感觉到纸上得来终觉浅,看得懂跟能做出东西完全两码事,尤其在定位那块,要吃透并且灵活运用,确实不容易。下面是自己练习时写的实例,感觉还挺有价值的,因为涉及的知识点还是挺全面的,新手的话好好看看,应该有不少收获。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>实践题 - 选项卡</title>
    <style type="text/css">
        body{
            font-family: "microsoft yahei";
            font-size: 18px;
            color: #999;
            padding:0;
            margin:0;
        }
        .hide{
            display:none;
        }
        #tabs {
            width: 345px;
            height: 300px;
            margin: 25px auto;  /* 注意这里的居中显示 */
        }
        #tabs ul {
            padding-left: 50px; /* 标题整体后移 */
            border-bottom: 2px solid saddlebrown;
            list-style: none;   /* 去除排头的点 */
            height: 30px;
            margin: 0;
            color: black;
        }
        /*#tabs ul li {*/
            /*display: inline-block;*/
            /*width: 30%;*/
            /*height: 32px;*/
            /*padding-top: 12px;*/
            /*border: 1px solid #aaa;*/
            /*border-bottom: none;*/
        /*}*/
        #tabs ul li {
            /* 注意这种float定位的方式与我上面直接修改为inline-block是有差别的,看上去好像一样,但在边框部分是有细微差异的,
            因为浮动定位实际上已经将li从ul中剥离出来了,其不再以ul的子元素进行展示,所以这时候它的边框能覆盖父级ul的边框 */
            float: left;
            height: 28px;   /* 注意这里li高度的设置细节,恰好与父级ul相差2px,这也正是ul的border宽度*/
            line-height: 28px;  /* 设置行高与字体一样大小以居中显示 */
            padding: 0px 15px;
            border: 1px solid #aaa;
            border-bottom: none;
        }
        #tabs ul li.on{
            border-top: 2px solid saddlebrown;
            border-bottom: 2px solid #fff;  /* 将选中的li的底部边框修改为白色便可覆盖ul设置的下边框,达到上下一体的效果 */
        }
        #tabs div {
            line-height: 1.5em;
            border: 1px solid #336699;
            border-top: none;
            text-align: center;
            padding-top: 10px;
            padding-bottom: 12px;
            padding-right: 18px;
        }
    </style>
</head>
<body>
<!-- HTML页面布局 -->
<div id="tabs">
    <ul>
        <li class="on">客至</li>
        <li>蜀相</li>
        <li>黄鹤楼</li>
    </ul>
    <div>
      舍南舍北皆春水,但见群鸥日日来。<br>
      花径不曾缘客扫,蓬门今始为君开。<br>
      盘飧市远无兼味,樽酒家贫只旧醅。<br>
      肯与邻翁相对饮,隔篱呼取尽馀杯!<br>
    </div>
    <div class="hide">
      丞相祠堂何处寻?锦官城外柏森森。<br>
      映阶碧草自春色,隔叶黄鹂空好音。<br>
      三顾频烦天下计,两朝开济老臣心。<br>
      出师未捷身先死,长使英雄泪满襟!<br>
    </div>
    <div class="hide">
      昔人已乘黄鹤去,此地空余黄鹤楼。<br>
      黄鹤一去不复返,白云千载空悠悠。<br>
      晴川历历汉阳树,芳草萋萋鹦鹉洲。<br>
      日暮乡关何处是,烟波江上使人愁。<br>
    </div>
</div>

<script type="text/javascript">
    var myTabs = document.getElementById("tabs");
    var myDivs = myTabs.getElementsByTagName("div");
    var myUl = myTabs.getElementsByTagName("ul")[0];
    var myLis = myUl.getElementsByTagName("li");

    for (var i = 0,len = myLis.length; i < len; i++) {
        // 这里将被绑定事件的li的索引先放入其对应对象的属性中,方便后面在改变对应div的class属性的时候调用
        myLis[i].index = i;
        myLis[i].onclick = function () {
            for (var j = 0; j < len; j++) {
                myLis[j].className = "";
                myDivs[j].className = "hide";
            }
            this.className = "on";
            myDivs[this.index].className = "";
        }
    }
</script>

</body>
</html>

 

posted @ 2017-01-02 17:54  笑叹词穷  阅读(314)  评论(0编辑  收藏  举报