html+css仿写小米商城

    利用空余时间仿写了一个小米商城的页面,都是最基础的结构和样式的写法,主要想锻炼自己写代码的能力和熟悉一下PC端网页的布局。等学完其他知识再来做补充。这里先记录一下我的仿写思路,以免忘记。

一、成果展示:

小米商城仿写

二、仿写前准备:

1、将模块分类,使用html5新标签

2、确定版心宽度以及位置

3、观察动态效果,能够使用css做出来的有:鼠标移入、过渡、表单获取焦点

三、html头部准备:

1、html的seo优化

<!-- seo优化 -->
    <!-- 1.标题 -->
    <title>小米商城 - Xiaomi 11 Ultra、Redmi K40 Pro、MIX FOLD,小米电视官方网站</title>
    <!-- 2.网站说明 -->
    <meta name="description" content="小米官网直营小米公司旗下所有产品,包括Xiaomi手机系列Xiaomi 11 Ultra、MIX FOLD,Redmi 红米系列Redmi Note 9、Redmi K40 Pro,小米电视、笔记本、米家智能家居等,同时提供小米客户服务及售后支持." />
    <!-- 3.关键字 -->
    <meta name="keywords" content="Xiaomi,redmi,Xiaomi11 Ultra,Redmi Note 9,Xiaomi MIX Alpha,小米商城" />
        

2、html引入外联样式以及字体图标

<link rel="stylesheet" href="./reset.css">
    <link rel="stylesheet" href="./index.css">
    <link rel="stylesheet" href="./font_3319021_0ltsnnymlpio/iconfont.css">
    <link rel="shortcut icon" href="./favicon.ico">

四、下面对网页各个模块进行描述

1、hearder模块

083c1000c12043acad0e1bacc815398a.png

     我将header模块内容分为三个盒子,利用浮动在一行显示,(注意清除浮动,防止父元素高度塌陷)盒子之间的距离用margin挤开(其他模块盒子的处理方式一样)。导航栏部分书写方式为 li+a,关于a的使用范围,如果不仅是a标签的内容,在空白部分也具有链接作用,则需要将a标签display:block / inline-block进行转换,可设置宽高,增大链接使用范围。

补充(高度塌陷解决办法):

1、给父元素设置高度;

2、给父元素增加 overflow:hidden(具有定位盒子的祖先元素慎用);

3、利用clear:both(此方法有一点深度,先会用)。

注:这里有两个下拉框,且都具有过渡效果,如下图:

0dcd4a0f57ad4e298e75845757164e33.png

30d6a83d20974fc78d04293669add450.png

     下拉框与鼠标经过的元素为父子关系或者兄弟关系,能够用css选择器选出即可。这里下拉框使用绝对定位确定位置,主要作用:①不占位置,不影响文档流;②可以提高定位盒子层级,让下拉框在页面最上面显示。

过渡效果:

1、transition:需要过渡的属性 花费的时间(必要两个属性值)

2、谁过渡给谁加这个属性

3、需要了解过渡与display:none不可一起使用。display:none使元素消失不存在,过渡效果无法给不存在的元素使用。

.ScarUnder {
    /* display: none; */
    position: absolute;
    top: 40px;
    right: 0px;
    z-index: 30;
    width: 330px;
    height: 0;
    overflow: hidden;
    text-align: center;
    line-height: 100px;
    font-size: 16px;
    box-shadow: 0 2px 10px rgb(0,0,0,.3);
    color: rgb(66,66,66);
    background-color: #fff;
    transition: height .3s;
}

.Scar:hover .ScarUnder {
    /* display: block; */
    height: 100px;
}

    这里使用height: 0;overflow: hidden; 思路:先将盒子高度设为0,此时盒子虽然高度为0但仍然存在于页面中;用overflow:hidden隐藏盒子里的内容,实现完全隐藏盒子。在鼠标经过其父元素或者兄弟元素时,将其高度设置为100px,此时下拉框完全显示并且具有过渡效果。

2、nav模块

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmluZTE5OThf,size_20,color_FFFFFF,t_70,g_se,x_16

题外话: 对于我来说,这里的下拉框有一些难度,经过思考后成功解决了,还是挺有成就感的,嘿嘿。

难点:此下拉框也有过渡效果,并且有一个全屏跨度的上边框。

解决:

.center .box {
    /* 父盒子center无定位,上一级定位在浏览器 */
    /*绝对盒子水平方向布局九个值等于父亲的width */
    position: absolute;
    top: 100px;
    left: 0;
    z-index: 33;
    width: 100%;
    /* 3.过渡效果所包含的属性 */
    height: 0;
    /* 1.下拉框内容隐藏 */
    overflow: hidden;
    /* 2.整个下拉框不可见,但是占位置,这里是绝对定位 */
    visibility: hidden;
    background-color: #fff;
    box-sizing: border-box;
    padding: 0px;
    /* 阴影处理 */
    box-shadow: 0 2px 2px rgba(0,0,0,.3);
    border-top: 1px solid rgb(224,224,224);
    /* 5.过渡 */
    transition: all .5s;
}
.center .box ol {
    width: 1245px;
    margin: 0 auto;
}
.center>li:first-child:hover .box {
    /* 4.整个下拉框可见也可以做过渡效果 */
    visibility: visible;
    height: 240.8px;
}

①首先子绝父相确定下拉框位置,这里为使下拉框宽度等于浏览器宽度,我以浏览器为准定位。

这里有个重点,绝对定位盒子在其具有定位父元素或者浏览器的水平布局由left margin-left border-left  padding-left width padding-right  border-right  margin-right  right九个值决定,因此定绝对位盒子的盒子width:100%时,其宽度等于它具有定位父元素或者浏览器的宽度。

②添加过渡效果

这里的重点是仅使用height: 0;overflow: hidden;不能将下拉框的上边框隐藏,需要同时用 visibility: hidden;虽然 visibility: hidden;会占有原来的位置,但是绝对定位盒子不占有位置,所以不影响文档流布局。

    其实以上就是我遇到的比较难的问题,其他主要就是盒子的布局问题,也不知道会不会有人看,写的东西也不深,如果真有小伙伴看,可以写下你的读后感,我们一起查漏补缺呀。如果有什么问题,欢迎在评论区写下你的问题,我们一起思考。

    谢谢观看,如果有个小赞赞就更好啦,嘿嘿~

 

 

 

  • 11
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值