CSS布局与JS结合 实现某宝店铺首页

前几天根据学习的知识整理的JS运动框架,这里直接引用JS运动框架,页面主要是实现css网页布局与JS运动、事件,随便找了一个某宝上的店铺借鉴

简书.gif

传送门

JS运动搞不定,你缺少一个框架而已
这里引用的JS 没整明白的可以去看一下

01总体布局


CSS布局
  • 采用盒子嵌套布局 使用magrin:0 auto;实现div的居中
  • 涉及到div的浮动,浮动元素的父级需要清除浮动
  • 使用CSS代码装饰时,可以将divborder打印出来验证,以免发生错误

02 图片滚动


商品推荐(ul).gif
  • 这是一个很典型的利用运动框架写的图片上下滚动
  • 定时器实现自动滚动
  • ul列包括图片和价格,按钮的层级z-index高于ul列的
  • 图片是一个ul li列,** ul 相对定位,使 ul top **属性改变实现上下滚动
  • startMove(oUl, { top:vlaue })oULul列,vlaue为移动的值
  • 在左右按钮上添加事件,左:在当前oUL.offsetTop - li 的高度

代码实现

//左按钮事件
//oUl为存放图片的无序列表
//oLi为oUl内的列
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函数,使用判断解决到达临界值
function tab(){
    var vlaue = oUl.offsetTop;
    if (vlaue<=-180) {
        vlaue=0;   
    } else {
        vlaue=vlaue-60;
    }
    startMove(oUl,{top:vlaue}); 
}
//定时器实现自动滚动
timer=setInterval(tab,2000);  
//oTuijian为按钮和ul列的父级盒子 当鼠标移动上的时候停止计时器
oTuijian.onmouseover=function(){
      clearInterval(timer);
};
oTuijian.onmouseout=function(){
        timer=setInterval(tab,2000);  
};

03 下拉菜单


下拉菜单.gif

CSS代码实现

.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 属性为内联元素
  • 子菜单postion为相对定位
  • 默认displaynone不显示
  • 当鼠标移动到父级上的触发控件上的时候 子菜单的display:block;
html代码
<div class="allBao clear">
    <!--触发按钮-->
    <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结束-->
</div>
<!--allBao结束-->

04 缓冲运动


JS菜单匀速运动.gif
布局
<div class="allBao clear">
    <!--触发按钮-->
    <a href="#">所有分类</a>
    <!--下拉菜单div-->
    <div class="allBao_bd">
        <!--菜单列-->
        <ul>
            <li>
                <div class="icon"></div>
                <a href="#" id="one_show">所有宝贝</a>
            </li>
        </ul>
        <!--一级菜单结束-->
        <div class="allBaoBei">
            <ul>
                <li><a href="#">按销量</a></li>
                <li><a href="#">按人气</a></li>
                <li><a href="#">按价格</a></li>
            </ul>
        </div>
        <!--allBaoBei结束-->
    </div>
    <!--allBao_bd结束-->
</div>
<!--allBao结束-->
  • allBao的父级导航条nav是绝对定位,二级菜单根据导航条相对定位
  • 这里我把二级菜单与一级菜单ul作为兄弟,也可以与allBao_bd作为兄弟级,改变的是相对定位的位置的不同
  • 二级菜单的width初始值为0,当鼠标移动到一级菜单的时候改变width的值
  • 二级菜单上记得添加overfllow:hidden,否则里面的内容会直接显示了

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});          
};
  • 这里需要注意的是,需要给二级菜单与一级菜单上都添加事件,避免从一级菜单移动到二级菜单时菜单消失
  • 通过修改二级菜单one_menuwidth值,这里的缓冲运动都是使用运动函数写的

05


总结一下

运用div盒子模型和css代码样式与js事件绑定实现的简单网页。这里重点写了利用我的上篇文章中总结的JS运动框架,可以看出,很多都可以使用那个实现。无论是轮播图片、菜单的显示、以及背景图片的位置改变。以及等等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,796评论 1 92
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,228评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,202评论 25 708
  • 突然难处这句话,情绪来的时候,真的感到无能为力,就像是此刻。 从昨天的任性翘班开始就跌入一个复杂情绪的漩涡,忐...
    命运的手阅读 591评论 0 0
  • iOS常用正则表达式 正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之...
    Flonger阅读 2,474评论 0 0