CSS布局與JS結(jié)合 實(shí)現(xiàn)某寶店鋪首頁

前幾天根據(jù)學(xué)習(xí)的知識整理的JS運(yùn)動框架,這里直接引用JS運(yùn)動框架,頁面主要是實(shí)現(xiàn)css網(wǎng)頁布局與JS運(yùn)動、事件,隨便找了一個(gè)某寶上的店鋪借鑒

簡書.gif

傳送門

JS運(yùn)動搞不定,你缺少一個(gè)框架而已
這里引用的JS 沒整明白的可以去看一下

01總體布局


CSS布局
  • 采用盒子嵌套布局 使用magrin:0 auto;實(shí)現(xiàn)div的居中
  • 涉及到div的浮動,浮動元素的父級需要清除浮動
  • 使用CSS代碼裝飾時(shí),可以將divborder打印出來驗(yàn)證,以免發(fā)生錯誤

02 圖片滾動


商品推薦(ul).gif
  • 這是一個(gè)很典型的利用運(yùn)動框架寫的圖片上下滾動
  • 定時(shí)器實(shí)現(xiàn)自動滾動
  • ul列包括圖片和價(jià)格,按鈕的層級z-index高于ul列的
  • 圖片是一個(gè)ul li列,** ul 相對定位,使 ul top **屬性改變實(shí)現(xiàn)上下滾動
  • startMove(oUl, { top:vlaue }),oULul列,vlaue為移動的值
  • 在左右按鈕上添加事件,左:在當(dāng)前oUL.offsetTop - li 的高度

代碼實(shí)現(xiàn)

//左按鈕事件
//oUl為存放圖片的無序列表
//oLi為oUl內(nèi)的列
Btn_left.onclick=function(){
    var vlaue = oUl.offsetTop; 
    if (vlaue<=0) {
      vlaue=(oLi.length-1)*-60;   
    } else {
             vlaue=vlaue+60;
    }
    startMove(oUl,{top:vlaue});
};
Btn_right.onclick=function(){
    tab();
};
//tab函數(shù),使用判斷解決到達(dá)臨界值
function tab(){
    var vlaue = oUl.offsetTop;
    if (vlaue<=-180) {
        vlaue=0;   
    } else {
        vlaue=vlaue-60;
    }
    startMove(oUl,{top:vlaue}); 
}
//定時(shí)器實(shí)現(xiàn)自動滾動
timer=setInterval(tab,2000);  
//oTuijian為按鈕和ul列的父級盒子 當(dāng)鼠標(biāo)移動上的時(shí)候停止計(jì)時(shí)器
oTuijian.onmouseover=function(){
      clearInterval(timer);
};
oTuijian.onmouseout=function(){
        timer=setInterval(tab,2000);  
};

03 下拉菜單


下拉菜單.gif

CSS代碼實(shí)現(xiàn)

.allBao{display: inline-block;}
.allBao_bd{position:absolute;display:none;width:200px;border: 1px solid gainsboro;z-index: 2;background: white;}
.allBao:hover .allBao_bd{display: block;}
  • 父級display 屬性為內(nèi)聯(lián)元素
  • 子菜單postion為相對定位
  • 默認(rèn)displaynone不顯示
  • 當(dāng)鼠標(biāo)移動到父級上的觸發(fā)控件上的時(shí)候 子菜單的display:block;
html代碼
<div class="allBao clear">
    <!--觸發(fā)按鈕-->
    <a href="#">所有分類</a>
    <!--下拉菜單div-->
    <div class="allBao_bd">
        <!--菜單列-->
        <ul>
            <li>
                <div class="icon"></div>
                <a href="#" id="one_show">所有寶貝</a>
            </li>
            <li>
                <div class="icon"></div>
                <a href="#" id="two_show">一半女生 一半女人</a>
            </li>
            <li>
                <div class="icon"></div>
                <a href="#" id="three_show">2016.12上新</a>
            </li>           
        </ul>
    </div>
    <!--allBao_bd結(jié)束-->
</div>
<!--allBao結(jié)束-->

04 緩沖運(yùn)動


JS菜單勻速運(yùn)動.gif
布局
<div class="allBao clear">
    <!--觸發(fā)按鈕-->
    <a href="#">所有分類</a>
    <!--下拉菜單div-->
    <div class="allBao_bd">
        <!--菜單列-->
        <ul>
            <li>
                <div class="icon"></div>
                <a href="#" id="one_show">所有寶貝</a>
            </li>
        </ul>
        <!--一級菜單結(jié)束-->
        <div class="allBaoBei">
            <ul>
                <li><a href="#">按銷量</a></li>
                <li><a href="#">按人氣</a></li>
                <li><a href="#">按價(jià)格</a></li>
            </ul>
        </div>
        <!--allBaoBei結(jié)束-->
    </div>
    <!--allBao_bd結(jié)束-->
</div>
<!--allBao結(jié)束-->
  • allBao的父級導(dǎo)航條nav是絕對定位,二級菜單根據(jù)導(dǎo)航條相對定位
  • 這里我把二級菜單與一級菜單ul作為兄弟,也可以與allBao_bd作為兄弟級,改變的是相對定位的位置的不同
  • 二級菜單的width初始值為0,當(dāng)鼠標(biāo)移動到一級菜單的時(shí)候改變width的值
  • 二級菜單上記得添加overfllow:hidden,否則里面的內(nèi)容會直接顯示了

JS代碼

//one_menu是二級菜單  
//one是一級菜單
//aIcon[0]是二級菜單的背景圖片
one_menu.onmouseover=one.onmouseover=function(){
        //修改背景圖片的backgroundPositionY
     startMove(aIcon[0],{backgroundPositionY:-71});
     startMove(one_menu,{width:180});
};
one_menu.onmouseout=one.onmouseout=function(){
    startMove(aIcon[0],{backgroundPositionY:-102});
    startMove(one_menu,{width:0});          
};
  • 這里需要注意的是,需要給二級菜單與一級菜單上都添加事件,避免從一級菜單移動到二級菜單時(shí)菜單消失
  • 通過修改二級菜單one_menuwidth值,這里的緩沖運(yùn)動都是使用運(yùn)動函數(shù)寫的

05


總結(jié)一下

運(yùn)用div盒子模型和css代碼樣式與js事件綁定實(shí)現(xiàn)的簡單網(wǎng)頁。這里重點(diǎn)寫了利用我的上篇文章中總結(jié)的JS運(yùn)動框架,可以看出,很多都可以使用那個(gè)實(shí)現(xiàn)。無論是輪播圖片、菜單的顯示、以及背景圖片的位置改變。以及等等。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,122評論 1 92
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,211評論 4 61
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,981評論 25 709
  • 突然難處這句話,情緒來的時(shí)候,真的感到無能為力,就像是此刻。 從昨天的任性翹班開始就跌入一個(gè)復(fù)雜情緒的漩渦,忐...
    命運(yùn)的手閱讀 691評論 0 0
  • iOS常用正則表達(dá)式 正則表達(dá)式用于字符串處理、表單驗(yàn)證等場合,實(shí)用高效?,F(xiàn)將一些常用的表達(dá)式收集于此,以備不時(shí)之...
    Flonger閱讀 2,597評論 0 0

友情鏈接更多精彩內(nèi)容