WEB前端的第一个项目——小米官网(含源码)

目录

介绍

一、首页

1.home-toll-bar

2.head

3.body-1

4.简单交互

(1) 鼠标划过改变样式

(2)弹出新内容

(3)图片循环变化

二、登录页面

三、注册页面

源码下载


介绍

此项目将使用html、css与简单的javascript实现小米官网的部分页面和功能,包含首页的一小部分,以及登录和注册三个页面。

最终效果如下:

可以与 小米官网对比一下!

一、首页

        我们可以将整个页面分为head和body两个大部分,每一部分再细分为若干个小部分,在逐一实现。

        我们发现页面的所有内容都出现在中间部分(home-toll-bar除外),两侧都留有空白,可以设置一个类属性,然后将后面需要居中的选择这个类属性就行了。

.c{
  width: 1228px;;
  margin: 1px auto;
  /*页面最大和最小宽度,防止缩放导致布局变乱*/
  max-width:1536px;
  min-width:1228px; 
}

1.home-toll-bar

        这部分可以用一个无序列表实现,每一个列表项又包含一个小图标和描述文字

<div id="home-toll-bar">
  <li>
    <img src="./image/index/r1-灰.png">
    手机APP</li>
  <li>
    <img src="./image/index/r2-灰.png">
    个人中心</li>
  <li>
    <img src="./image/index/r3-灰.png">
    售后服务</li>
  <li>
    <img src="./image/index/r4-灰.png">
    人工客服</li>
  <li>
    <img src="./image/index/r5-灰.png">
    购物车</li>
</div>

        需要注意的是,当页面滚动的时候,它不会随着滚动,而是始终固定在页面右下角,可以使用fixed布局实现。

#home-toll-bar{
  background: #FFFFFF;
  position: fixed;
  right: 0;
  bottom: 100px;
}

2.head

        head部分可以分为左边一个导航栏,右边一个登录注册及消息通知和购物车三个部分组成。前两部分可以直接写,也可以使用列表加上display:inline属性,将列表项转换成内联元素。再通过float属性,将①设为左浮动,②③设为右浮动。

        这里注意:内联元素是无法设置高和宽等属性的,解决办法是将需要设置宽高的内联元素添加float属性就行了,当然也有别的办法。

        ③购物车部分是由左边图标和右边文字两部分组成的

3.body-1

        页面的主体部分,之所以叫body-1是因为后面如果继续往下写,还可以叫body-2,-3......

        ①navigation和head一样,左边的小米图标设置左浮动(float:left),列表和搜索框右浮动(float:right),只不过搜索框又包含了一个输入框和一个按钮。慢慢调整一下元素大小和间距就好了。

<div class="c" id="navigation">
  <img id="mi-icon" src="image/mi-icon.png">

  <button id="b-search"></button>
  <input type="text" id="inputfile">

  <div id="nav">
    <a class="nav-a">社区</a>
    <a class="nav-a">服务</a>
    <a class="nav-a">智能硬件</a>
    <a class="nav-a">路由器</a>
    <a class="nav-a">家电</a>
    <a class="nav-a">平板</a>
    <a class="nav-a">笔记本</a>
    <a class="nav-a">电视</a>
    <a class="nav-a">Redmi红米</a>
    <a class="nav-a" id="Xiaomi手机">Xiaomi手机</a>
   </div>
</div>

        ②部分可以图片和列表两个元素,列表设置绝对布局(position:absolute)然后调整位置让列表位于图片上面,再加个透明度就行了。不过我是把图片当做背景,整个高度是由列表一个元素撑起来的。后面可通过javascript实现图片的变化。

<div class="c" id="c-img1" >
  <div id="categoryList">
    <ul id="ul0">
      <li class="list" id="l">手机</li>
      <li class="list">电视</li>
      <li class="list">笔记本 平板</li>
      <li class="list">家电</li>
      <li class="list">出行 穿戴</li>
      <li class="list">智能 路由器</li>
      <li class="list">电源 配件</li>
      <li class="list">健康 儿童</li>
      <li class="list">耳机 音响</li>
      <li class="list">生活 箱包</li>
    </ul>
  <div>
<div>
#c-img1{
  height: 461px;
  background:url('../image/index/change/0.jpg');
  background-size:contain;
  box-shadow:0 0 2px rgb(180, 180, 180);
}
#categoryList{
  height: inherit;
  width: 20%;
  background: #110d0d50;
  display:inline;
  float:left;
}

        ③的第一个第一个方块和home-toll-bar是一样的,都是由图片和下面的文字构成,只不过变成3×2的了,把之前的复制过来,稍微改一下就好了。后面就是三个图片,注意调整大小和间距就好了。

<div class="c" id="qw">
  <div id="qqq">
    <div>
      <a id="a-1" href="#" class="ii">
        <img id="a-1-i" class="i" src="./image/index/i-1-灰.png">
        保障服务
      </a>
     </div>
     <div>
       <a id="a-2" href="#" class="ii">
          <img id="a-2-i" class="i" src="./image/index/i-2-灰.png">
           企业团购
        </a>
      </div>
      <div>
        <a id="a-3" href="#" class="ii">
          <img id="a-3-i" class="i" src="./image/index/i-3-灰.png">
          F码通道
        </a>
      </div>
        <a id="a-4" href="#" class="ii">
          <img id="a-4-i" class="i" src="./image/index/i-4-灰.png">
          米粉卡
        </a>
      <div>
        <a id="a-5" href="#" class="ii">
           <img id="a-5-i" class="i" src="./image/index/i-5-灰.png">
           以旧换新
        </a>
      </div>
      <div>
        <a id="a-6" href="#" class="ii">
           <img id="a-6-i" class="i" src="./image/index/i-6-灰.png">
           话费充值
        </a>
      </div>
    </div>

    <div>
       img class="img" src="./image/index/7.jpg">
       <img class="img" src="./image/index/6.jpg">
       <img class="img" src="./image/index/5.jpg">
    </div>
</div>

4.简单交互

(1) 鼠标划过改变样式

        页面内容写完了,我们还想让他有一些简单的交互功能,比如说当鼠标移动到某个元素上面或者点击某个元素时,改变元素得样式,来给予一些反馈效果,或者弹出新的内容。比如说对于顶部head里的每一个元素,给他添加一个伪类:hover

.head-bar1:hover{
  cursor:pointer;
  color: #FFFFFF;
}

        这样当鼠标划过该元素得时候,就会呈现设置的样式,其中cursor:pointer也可以直接写在元2素样式里。

        右上角的购物车需要注意一下,因为他是由图片和文字两部分构成的,当鼠标移动到一个元素上是另一个元素得样式也随之改变,这就只能通过JavaScript来实现。

sh =id("c-shopping");
shicon=id("shoppingicon");
g=id("gou");
sh.onmouseover=
function(){
  sh.style.background="#fff";
  shicon.src="./image/index/购物车-橙.png";
  g.style.color="#FF7600";
}
sh.onmouseout=
function(){
  sh.style.background="#474747";
  shicon.src="./image/index/购物车-灰.png";
  g.style.color="#AEAEAE";
}

        先分别获取三个元素的id,通过onmouseover方法设置鼠标划过时改变背景颜色、图片和文字颜色。然后还要通过onmouseout设置鼠标移开时还原样式,否则就会一直处于划过的样式。后面第③部分也是一样。

(2)弹出新内容

        当鼠标移动到“下载APP”时,会弹出二维码

         我们可以通过某些属性将二维码隐藏起来,当鼠标划过的时候再让其显示就好了。

<div id="download-image">
        <img src="./image/index/download.png" >
        <P>小米商城APP</P>
      </div>
#download-image{
  box-shadow:0 0 10px #474747;
  position: absolute;
  left:580px;
  top: 24px;
  font-size: 0;
  display:none;
}

        这里使用绝对布局(position: absolute),将元素调整到想要的位置。但有个缺点是当页面缩放的时候,位置会发生偏移。

        隐藏元素有很多种方法,这里是 将属性display的值设为none,也可以使用别的方法。

var id = function(id){
  return document.getElementById(id);
}

//下载APP弹出
var a = id("downloadapp");
var b = id("download-image");

a.onmouseover=b.onmouseover=
function(){
  b.style.display="block";
}
a.onmouseout=b.onmouseout=
function(){
  b.style.display="none";
}

        这里希望鼠标从下载APP移动到二维码上面的时候,二维码仍然显示,就设置连等于,然后再设置onmouseout,当鼠标移开始再隐藏二维码。

        后面购物车和导航栏以及中间部分的列表都是相同的设置,只要调整好隐藏元素的位置就行了。购物车的地方因为之前已经设置了一个omouseover方法,如果再重新设置前面的方法就会失效,所以直接在前面的方法里添加就行了。基本就可以实现下列效果。

         缺点就是absolute布局在页面缩小的时候会发生偏移,还有画面显示不够顺滑。

(3)图片循环变化

        

         先加入①②两个按钮用于控制背景图片变换。先创建一个数组用于保存图片路径。

var array = new Array(5);
array[0] = "url('../image/index/change/0.jpg')"
array[1] = "url('../image/index/change/1.jpg')"
array[2] = "url('../image/index/change/2.jpg')"
array[3] = "url('../image/index/change/3.jpg')"
array[4] = "url('../image/index/change/4.jpg')"
var i=0;
e = id("c-img1");
function change() {
  i=(i+5)%5;
  // console.log("now:"+i);
  // console.log("减一:"+(i+4)%5);
  e.style.background=array[i];
  e.style.backgroundSize = "contain";
}

        定义一个函数,内容为将背景图片设置为array[i]的路径指向的图片。第一句i=(i+5)%5确保了i的值始终在0到4之间,形成循环。

        然后再设置两个按钮的点击事件,通过i的值减一和加一来控制上一张图片和下一张图片。

id("button-prev").onclick =function(){
  i--;
  change();
}
id("button-next").onclick =function(){
  i++;
  change();
}

        ③部分可以算是循环图片的一个序号给他叫做c-img1-nav,可以直接看出当前处在第几张图片,每一部分就是不同颜色的同心圆。

<div class="yuan big">
  <div class="yuan small"></div>
</div>
<div class="yuan big">
  <div style="background:#fff" class="yuan small"></div>
</div>
.yuan{
  margin:0 10px;
  float:left;
  border-radius: 50%;
}
.big{
  height:100px;
  width:100px;
  background:#aaaaaa;
}
.small{
  height:60px;
  width:60px;
  margin:20px;
  background:#666666;
}

        效果如下:

        中间圆为白色代表选中状态,缩小后放在合适位置。

        我们需要给这个c-img1-nav也设置一个数组,与背景图片相对应。

var ray=["a-00","a-01","a-02","a-03","a-04"];

        然后加上图片变化时c-img1-nav也会相对应变化。直接将以下代码加入到之前change函数中。

// 右下角圆圈变换
  id(ray[(i+4)%5]).style.background="#666";
  id(ray[(i+6)%5]).style.background="#666";
  id(ray[i]).style.background="#FFF";

        因为不管点击下一张图片还是上一张图片,调用的是同一个函数,所以这里不仅要把当前圆圈(id为ray[i]的圆圈)设为白色、之前一个圆圈(id为ray[(i+4)%5]的圆圈)设为灰色,还要把后面一个圆圈(id为ray[(i+6)%5]的圆圈)也设为灰色。

 

        不足之处是背景切换的不自然,没有实现背景自动切换。

二、登录页面

         登录页面左边是一个背景图片,右边分为顶部栏,主体部分和尾部版权三部分。主体部分就是输入框,单选框,按钮等一些元素,主要还是css样式将布局设置成你想要得样子。

        这里有个细节就是当页面放大时候,由于空间不够,就要影藏图片,然后让右边部分全屏显示,可以通过JavaScript来实现。

var a = document.getElementById("left");
var r = document.getElementById("right");

function h() {
  // console.log("页面宽度变化!");
  // console.log(window.innerWidth);
  if (window.innerWidth<900){
    a.style.display='none';
    r.style.width='100%';
  }
  else if (window.innerWidth>=900){
    a.style.display='inline';
    r.style.width='78%';
  }

}

window.addEventListener('load',h);

window.addEventListener('resize',h);

        先分别获取两部分元素得id,再定义一个函数通过window.innerWidth获取窗口宽度,当小于一定值的时候就将左边部分隐藏,同时将右边的宽度设置为全屏,也就是100%。最后再添加事件,当窗口加载或者窗口大小改变的时候执行函数h。

三、注册页面

        注册页面和登录页面基本一致,只是内容有一点差别。最后将这两个页面链接到首页右上角的登录和注册标签里,这样点击登录或者注册就能跳转到对应的页面了。

源码下载

小米官网simplyhttps://download.csdn.net/download/simplyxx/48369137icon-default.png?t=M4ADhttps://download.csdn.net/download/simplyxx/48369137

csdn上传的资源我设置可以免费下载,现在他自己变成要会员

可以通过蓝奏云下载: 小米官网simply.zip - 蓝奏云文件大小:883.7 K|https://wwp.lanzouf.com/iZd6y06isg9i

END

simplyxx
关注 关注
  • 38
    点赞
  • 226
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
适合做软件官网展示的源码
爱分享的小可爱
03-22 7629
需要搭建在服务器使用: 国内外云服务器https://www.jyyidc.com/server/buy.html linux系统用宝塔面板 玖毅云Linux面板-宝塔联合定制玖毅云Linux面板-宝塔联合定制https://www.jyyidc.com/linux/注意: 不需要PHP 不需要mysql 使用:IIS、apache、nginx 直接上传就可以了 ...
小米商城html项目实战,js+css+html
12-12
小米商城html项目实战,js+css+html
小米官网HTML5
12-04
仅供初学者巩固基础,交流和学习。跟案例为模仿小米官网用于传授HTML5基础课程学习。
小米官网前端页面代码
01-10
小米官网前端页面代码
模拟实现小米商城(有源码)
最新发布
程序猿教你打篮球的博客
05-07 535
这是一个只有前端没有后端的项目, 适合于基础前端课设.该前端项目没有花里胡哨的特效, 纯手写 HTML CSS JS, 特别适合基础小白入门, 或者做为基础的课设(有组员介绍页面), 此项目中, 充分使用 flex 布局, 绝对 相对定位, css 动画, 封装公共样式区域, 代码风格及命名规范, 几乎涵盖了所有 HTML CSS 基础知识! 实现了: 组员介绍, 手机APP, 好物推荐, 售后服务, F码通道, 购物车, 以旧换新等页面。源码可分享!
高仿小米商城网页整套源代码.zip
01-11
高仿小米商城网页,和小米商城页面尽可能的一模一样,是我们WEB课最后的结课综合大作业,里面包小米商城首页页面、详情页面、购物车页面等页面,用的都是最基础的html语言,外部样式表、内部样式表和javascript都用了,同时也有一点新颖的地方——bootstrap,首页用了一点点bootstrap框架,基本满足了同学应急WEB作业的所有需求;同时由于老师要求,也加上了极为详细的注释,一点一点手写出来的,实属不易,供大家互相学习讨论,对代码有疑问的也欢迎随时私信我,大家一起进步!(禁止一切不良偷窃行为,提交时间:20-01-11)
仿小米官网(html+js+css)
11-09
学习前端知识时写的一个仿小米官网的一些页面+css样式+js验证代码
小米官网源代码
06-11
小米官网源代码
网络科技公司官网源码网站建设官网建站公司模板
tutujunjun的博客
05-14 1841
(电脑+手机端)【2023新版升级】高端大气网络科技公司官网源码网站建设官网企业建站小程序开发企业官源码 网站源码下载PbootCMS内核开发的网站模板,该模板适用于网站建设、小程序建设等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可;友好的seo,所有页面均都能完全自定义标题/关键词描述,PHP程序,安全、稳定、快速。运行环境:linux+nginx/ linux+apache / windows + iis(支持php5.3+) / 其他支持php5.3+环境-pbootcms。
小米商城html+css+js全代码
热门推荐
weixin_57774021的博客
03-21 1万+
小米商城全代码,供参考,互相学习
仿12306官网(附源码
m0_72975897的博客
09-18 2246
今天跟大家分享一下这几天写的一个12306的官网,多多指教呀~
小米商城html+css
m0_74031471的博客
06-04 2892
完整的代码包括图片和图标在github。
小米静态首页
03-27
HTML5+CSS3完成的小米网站首页,引入js插件实现动画轮播功能
小米商城html
01-03
利用css和html布局网页
仿小米官网源码
10-13
仿小米官网源码,不懂安装可以加我
小米闪购网站项目(详细源代码)
01-30
前端开发小米闪购网站,运用html和css,没有js,适合刚学完html,css的学习者,文件包详细源代码
Android小项目——新闻APP(源码
02-26
Android小项目——新闻APP(源码),一个很简单的可以练手的Android Demo Ps:下载之前可以先看一下这篇文章——https://blog.csdn.net/qq_34149526/article/details/80992341
小程序第一个项目——安心食疗
02-04
小程序第一个项目——安心食疗
Web网页设计期末大作业——壁纸之家网站源码(纯手打,高分项目).zip
06-18
Web网页设计期末大作业——壁纸之家网站源码(纯手打,高分项目Web网页设计期末大作业——壁纸之家网站源码(纯手打,高分项目Web网页设计期末大作业——壁纸之家网站源码(纯手打,高分项目Web网页设计期末大...
小米商城web前端实战项目(附源码)
01-16
小米商城web前端实战项目是一个非常值得学习和探索的项目,通过学习该项目源码,可以对前端开发有更深入的了解和实践。该项目的主要特点包括响应式布局、页面动画效果、数据请求和处理、组件化开发等。 首先,响应式布局是该项目的一个重要特点,通过媒体查询和flex布局等技术实现了在不同设备上的自适应,使得页面在手机、平板和电脑上都能有良好的展示效果,这对于网页设计来说是非常关键的一点。 其次,页面动画效果也是该项目的一个亮点,在使用CSS3和Javascript的动画效果方面展示了丰富的实践经验,比如实现了页面加载时的渐显效果、轮播图的切换效果等,这些都是非常实用的技巧。 此外,数据请求和处理也是该项目中需要重点关注的部分,通过Ajax技术和其他数据接口,实现了商品信息的获取和展示,加入购物车等功能。 最后,组件化开发是该项目的另一个特点,通过划分各个功能模块,实现了组件的高内聚低耦合,提高了代码的复用性和维护性。 总之,通过学习小米商城web前端实战项目源码,可以对前端开发有更深入的了解和实践,积累丰富的经验和技巧,为以后的项目开发提供了很好的参考和借鉴。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • WEB前端的第一个项目——小米官网(含源码) 18121
  • 第一个动态网页——留言板 3928
  • C语言多线程求和并比较时间 659

最新评论

  • WEB前端的第一个项目——小米官网(含源码)

    倪倪爱玩: 为啥我点蓝奏云,无法访问该链接页面

  • WEB前端的第一个项目——小米官网(含源码)

    倪倪爱玩: 为啥我点蓝奏云,无法访问该链接页面

  • WEB前端的第一个项目——小米官网(含源码)

    hasipe: 感谢您了

  • WEB前端的第一个项目——小米官网(含源码)

    Zzz、Yy: 你好请问为什么我打开index.html它只显示一半页面 轮播图下面就没了 但是您代码是全的阿

  • 第一个动态网页——留言板

    郑能吃: 源码下载是不是缺个sql文件

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 第一个动态网页——留言板
  • C语言多线程求和并比较时间
2022年1篇
2021年2篇

目录

目录

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

simplyxx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳SEO优化公司迁安品牌网站设计价格抚州外贸网站制作大丰百度seo哪家好普洱seo永州营销网站报价大鹏外贸网站设计哪家好本溪百度关键词包年推广公司承德阿里店铺运营价格商丘网站设计多少钱迁安企业网站制作推荐安庆设计网站推荐曲靖网站优化按天扣费公司宝鸡建网站鸡西关键词按天扣费湘西阿里店铺托管价格西宁模板推广价格揭阳如何制作网站公司黄冈百姓网标王毕节网站优化排名价格梧州设计网站多少钱吉林网站搜索优化多少钱陇南网页制作价格开封百搜标王报价玉林百度网站优化推荐木棉湾网络营销哪家好甘南网站定制诸城百度关键词包年推广推荐鄂州网站推广推荐襄阳营销网站公司漳州阿里店铺托管公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化