布局:

    1. 响应层在992px的时候,默认的网站分为左边和右边(两列)
    2. 到达992px的时候,变成一个通栏,也就是一行,
    3. 到了768的时候,还第二栏的图片才开始是一行4个后来变成了一行2个
    4. 在md(中等屏幕下576px),导航、登录注册、按钮消失,图片竖着拍(一行一张),星享俱乐部也从两列变成一列,在最下面多了一行导航

    思考可能要用到的bootstrap中的知识点:

    1. 导航栏,导航栏里面的组件(可以包含多个部分【logo、按钮、】)
    2. 轮播图组件
    3. 卡片的组件(标题文字)
    4. 我们要有放大缩小的效果,折叠菜单(面板)不具备这个功能,通过手动自己写的功能,
    5. 图片响应式,隐藏和显示(导航 );
    6. 左侧导航,我们在相应的尺寸下滑动的时候它是不会动得,我们在缩小的时候它的尺寸变大了(响应式)
    7. 底部菜单也是固定的定位,放在了页面的最底部,会和我的滚动条滚动
    8. 页面当中的滚动条图标,

    构思完成开始编写:
    首先,引入bootstrap中的4.x的版本的css基础库,jQuery的引入和bootstrap中的主体的基础库(popper没有用到就没有引入),iconfont的引入,index.css我们自己手动写的bootstrap以外的css
    OK~Action!!!
    然后,页面是通栏的100%,.container-fulid,然后给一个行,里面有两列(左边 || 右边);左边、右边的列这个时候要给上一个响应层,lg下通栏,这时候我们在lg以上的时候,我们的左边是一个固定定位(.position-fixed,给完之后脱离文档流了,在我们不满足lg的时候,我们要使他们满屏,左侧所占的空间,到时候右侧就会顶上去,所以这是一个坑。解决方案:既然脱离文档流了,右侧就跑到了左侧,我的父级是一个row,目前来说是一个父级弹性盒模型,就可以决定子元素对齐的方法了,justify-content-end[让我的子元素右边排列,这时候我的左侧已经过去了,其实我选中的范围就是一个右侧的范围,这时候我们的右侧已经到了右边,我让我们的左侧脱离文档流就了到左边。单独设置leftCon(left:0);这时候这两列就OK了;当小于lg的时候,就需要满屏处理,然后这时候它俩又叠在了一起,因为还是固定定位脱离文档流,又被右侧顶上去了,解决方案:通过我们的媒体查询解决;我们就要让左侧不是一个固定定位,然后就是position-fixed没有给定位,提供响应式,所以只能在媒体查询中,去实现它,让它的定位变成relative !important);
    左边:三块内容(
    a. 导航(.navbar :可以放多个组件;(1)a标签logo区域 .nav-brand; > img;(2)真正的导航ul.nav>li.nav-item>a.nav-link ;(3)按钮button;自定义图标,span.iconfont icon-menu;这时候要定义一个id就是要通过它进行一个showBtn的内容功能;)
    b. 标题、登录、注册(需要单独来一个div,把里面的内容放在一个div中,里面有两块东西是需要放在一个div当中的,因为它们要有间距,它们并没有和上面的logo对齐,我们可以通过父级统一的定义它们俩;(1)标题汉字;h1>span图标(2)登录注册;div响应式出现和隐藏,>a>span图标)
    c. 在导航栏中最后有一个btn按钮,点击之后会有一个内容的展现。内容:有一个导航、登录注册、底部;(还是需要一个div放在一个层当中(1)用header.navbar>a.navbar-brand+span关闭按钮 (2)div.list >ul>li>a div{两个按钮登录和注册} (3)footer>div>a )
    d. 设计这个主体的功能了,点击导航栏中的菜单按钮之后那个内容显示出来,显示出来之后要盖上所有的导航内容的,目前来说,这里有一个功能,当我们的有两列同时有内容的时候,当我去点击那个内容展示区中的关闭按钮,左侧区域出来了,右侧内容还在,但当我缩小屏幕的时候它会变成一个响应式,就是把右侧内容也盖住了,其实右侧是有内容的,这时候我们根据父级元素,我们也是盖上了,但是出现了一个问题,就是这个右侧内容没有盖上,右侧显示出来了。解决方案:增加层级;我们开始的菜单内容展示区就是一个hide区,实现点击菜单按钮就是切换hide和show的模式,单独定义两个class,分别是hide和show的状态,我们点击的时候我们把它们身上的class进行一个切换就可以实现效果了,同时它们身上还有一个过渡效果,我们通过transition实现它;然后再定义这两个hide和show的模式的class(opacity || transform:scale(值));当我们这个菜单内容展示框出来的饿时候,我们的主体body不要它发生滚动了,当它消失的时候,再发生滚动;这时候就需要手动我们的js【我们需要满足:通栏小于lg;判断用户的尺寸,还有就是我的通栏之后我的菜单内容是显示的内容;】)

    右边:右边内容是一个列,每一块内容,又是一个行栅格系统在一个列当中,可以分12个列;所以每一块内容都是需要放在了一个行当中。
    (1)轮播图;(div.carousel .slide( 变成不是立马就切换的,让它变成滑动 ) #pic(为了让我们的小方条,以及左右箭头点击操作的时候,要找到对应的层需要找到一个id相结合。) data-ride=’carousel’ 轮播图最父级> 1. 图片文本类div.carousel-inner>文字、图片都可以div.carousel-item>响应式 img.img-fluid ,目前为止轮播图最基础的内容和功能就已经OK了。2. 左右按钮控制器;a#pic.carousel-control-prev>span图标 + a#pic.carousel-control-next>span图标 3.指示器;ul.carousel-indicators>li data-target=’#pic’ data-slide-to=’0’)
    (2)三张响应式图片;(div>col-sm-4>a>img.img-fluid ,img-thumbnail图片圆角边框)
    (3)星响俱乐部两列;(1. div.col-sm-5>( h2 +( p>a ) + div>button.btn .btn-outline-success 2.div.col>img.img-fluid)
    (4)星巴克精选:上下两个部分;(1. div.row>( div.col-12>h3 ) + div.col-12>ul>li>a>( img + h4 + p{
    } ))
    (5)咖啡新讲堂(和星巴克精选差不多);(1. div.col-12>( h3 + p ) 2.div.col-12>div.scroll>ul>li.card>( a>img.card-img-top + div.card-body>h4 + span))

    底部:footer.fixed-bottom>ul.row.d-flex.list-unstyle>li.text-content>a.text-muted>( span图标 + span )

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title></title>
    6. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    7. <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
    8. integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    9. <link rel="stylesheet" href="css/iconfont.css">
    10. <link rel="stylesheet" href="css/index.css">
    11. </head>
    12. <body>
    13. <div class="container-fluid">
    14. <div class="row justify-content-end">
    15. <!-- 左边内容 -->
    16. <div class="col-lg-4 position-fixed border-right leftCon">
    17. <!-- 导航栏 -->
    18. <header class="navbar d-none d-sm-flex px-0 px-lg-3 py-3 py-lg-4">
    19. <a href="#" class="navbar-brand"><img src="images/logo.svg" alt="" width="36"></a>
    20. <ul class="nav mr-auto">
    21. <li class="nav-item">
    22. <a href="#" class="nav-link text-dark font-weight-bold">门店</a>
    23. </li>
    24. <li class="nav-item">
    25. <a href="#" class="nav-link text-dark font-weight-bold">我的账户</a>
    26. </li>
    27. <li class="nav-item">
    28. <a href="#" class="nav-link text-dark font-weight-bold">菜单</a>
    29. </li>
    30. </ul>
    31. <span class="iconfont icon-menu" id="showBtn"></span>
    32. </header>
    33. <!-- 标题与登录注册 -->
    34. <div class="d-flex align-items-center login">
    35. <div class="px-0 px-lg-5">
    36. <h1 class="font-weight-bold py-3">心情惬意,来杯咖啡吧 <span class="iconfont icon-kafei"></span></h1>
    37. <div class="d-none d-sm-block my-3">
    38. <a href="#" class="text-success">
    39. <span class="iconfont icon-denglu"></span>
    40. <span>登录</span>
    41. </a>
    42. <a href="#" class="btn btn-outline-success ml-4 register">注册</a>
    43. </div>
    44. </div>
    45. </div>
    46. <!-- 点击菜单后要展示的内容 -->
    47. <div class="d-flex bg-white flex-column justify-content-between position-absolute menu hide">
    48. <header class="navbar d-flex px-0 px-lg-3 py-3 py-lg-4">
    49. <a href="#" class="navbar-brand"><img src="images/logo.svg" alt="" width="36"></a>
    50. <span class="iconfont icon-guanbi" id="closeBtn"></span>
    51. </header>
    52. <div class="list">
    53. <ul class="list-unstyled mx-sm-5 pl-sm-5">
    54. <li><a href="#" class="font-weight-bold text-dark py-2 d-block">门店</a></li>
    55. <li><a href="#" class="font-weight-bold text-dark py-2 d-block">星享俱乐部</a></li>
    56. <li><a href="#" class="font-weight-bold text-dark py-2 d-block">菜单</a></li>
    57. <hr>
    58. <li><a href="#" class="font-weight-bold text-dark py-2 d-block">星巴克移动应用</a></li>
    59. <li><a href="#" class="font-weight-bold text-dark py-2 d-block">星礼卡</a></li>
    60. <li><a href="#" class="font-weight-bold text-dark py-2 d-block">星巴克臻选™</a></li>
    61. <li><a href="#" class="font-weight-bold text-dark py-2 d-block">啡快™ - 在线点 到店取</a></li>
    62. <li><a href="#" class="font-weight-bold text-dark py-2 d-block">专星送™</a></li>
    63. <li><a href="#" class="font-weight-bold text-dark py-2 d-block">咖啡星讲堂</a></li>
    64. <li><a href="#" class="font-weight-bold text-dark py-2 d-block">上海烘焙工坊</a></li>
    65. <li><a href="#" class="font-weight-bold text-dark py-2 d-block">关于星巴克</a></li>
    66. <li><a href="#" class="font-weight-bold text-dark py-2 d-block">帮助中心</a></li>
    67. <hr>
    68. </ul>
    69. <div class="my-3 mx-sm-5 pl-sm-5 font">
    70. <a href="#" class="text-success">
    71. <span class="iconfont icon-denglu"></span>
    72. <span>登录</span>
    73. </a>
    74. <a href="#" class="btn btn-outline-success ml-4 register">注册</a>
    75. </div>
    76. </div>
    77. <footer class="mx-sm-5 pl-sm-5 pb-5">
    78. <div>
    79. <a href="#">English</a> | <a href="#">隐私政策</a> | <a href="#">使用条款</a> |
    80. </div>
    81. <div>
    82. <a href="#"><img src="images/icpicon.png" width="10" height="10" alt="">沪公网安备 31010402000318号</a> | <a href="#">沪ICP备17003747号</a>
    83. </div>
    84. </footer>
    85. </div>
    86. </div>
    87. <!-- 右边内容 -->
    88. <div class="col-lg-8 bg-light">
    89. <!-- 轮播图 -->
    90. <div class="row">
    91. <div class="carousel slide" id="pic" data-ride='carousel'>
    92. <div class="carousel-inner">
    93. <div class="carousel-item active">
    94. <img src="images/kv1.jpg" class="img-fluid" alt="">
    95. </div>
    96. <div class="carousel-item">
    97. <img src="images/kv2.jpg" class="img-fluid" alt="">
    98. </div>
    99. <div class="carousel-item">
    100. <img src="images/kv3.jpg" class="img-fluid" alt="">
    101. </div>
    102. <div class="carousel-item">
    103. <img src="images/kv4.jpg" class="img-fluid" alt="">
    104. </div>
    105. </div>
    106. <!-- 控制器 -->
    107. <a href="#pic" class="carousel-control-prev" data-slide='prev'>
    108. <span class="iconfont icon-left"></span>
    109. </a>
    110. <a href="#pic" class="carousel-control-next" data-slide='next'>
    111. <span class="iconfont icon-right"></span>
    112. </a>
    113. <!-- 指示器 -->
    114. <ul class="carousel-indicators">
    115. <li class="active" data-target="#pic" data-slide-to="0"></li>
    116. <li data-target="#pic" data-slide-to="1"></li>
    117. <li data-target="#pic" data-slide-to="2"></li>
    118. <li data-target="#pic" data-slide-to="3"></li>
    119. </ul>
    120. </div>
    121. </div>
    122. <!-- 三张图片 -->
    123. <div class="row py-4">
    124. <div class="col-sm-4 my-2 my-sm-0">
    125. <a href="#">
    126. <img src="images/img_01.jpg" class="img-fluid img-thumbnail" alt="">
    127. </a>
    128. </div>
    129. <div class="col-sm-4 my-2 my-sm-0">
    130. <a href="#">
    131. <img src="images/img_02.jpg" class="img-fluid img-thumbnail" alt="">
    132. </a>
    133. </div>
    134. <div class="col-sm-4 my-2 my-sm-0">
    135. <a href="#">
    136. <img src="images/img_03.jpg" class="img-fluid img-thumbnail" alt="">
    137. </a>
    138. </div>
    139. </div>
    140. <!-- 星享俱乐部 -->
    141. <div class="row p-5 bg-white align-items-center text-center text-sm-left start">
    142. <div class="col-sm-5">
    143. <h2>星享俱乐部</h2>
    144. <p class="py-3 text-muted">开启您的星享之旅,星星越多、会员等级越高、好礼越丰富。<a href="#">了解更多 ›</a></p>
    145. <div>
    146. <button class="btn btn-outline-success btn-lg">注册</button>
    147. <button class="btn btn-outline-success btn-lg">登录</button>
    148. </div>
    149. </div>
    150. <div class="col mt-5 mt-sm-0 text-sm-right">
    151. <img src="images/logo-msr-new.svg" class="img-fluid" alt="">
    152. </div>
    153. </div>
    154. <!-- 星巴克精选 -->
    155. <div class="row pb-5 betters">
    156. <!-- 标题 -->
    157. <div class="col-12 text-center">
    158. <h3 class="my-4 text-dark">星巴克精选</h3>
    159. <p class="text-muted">在星巴克天猫旗舰店发现更多咖啡心意</p>
    160. </div>
    161. <!-- 四块内容 -->
    162. <div class="col-12">
    163. <ul class="row list-unstyled justify-content-around px-5">
    164. <li class="col-6 col-md-3">
    165. <a href="#" class="d-inline-block text-center px-2 bg-white rounded postion-relative">
    166. <img src="images/tmall-card-01.png" class="img-fluid" alt="">
    167. <h4 class="my-2 text-dark font-weight-bold">会员星礼包</h4>
    168. <p class="text-muted">星享卡新升级<br>更多心意好礼</p>
    169. <p class="caption">了解更多 ›</p>
    170. </a>
    171. </li>
    172. <li class="col-6 col-md-3">
    173. <a href="#" class="text-center px-2 bg-white rounded d-inline-block position-relative">
    174. <img src="images/tmall-card-02.png" class="img-fluid" alt="">
    175. <h4 class="my-2 text-dark font-weight-bold">星礼卡</h4>
    176. <p class="text-muted">用一份心礼<br>让心意相随</p>
    177. <p class="caption">了解更多 ›</p>
    178. </a>
    179. </li>
    180. <li class="col-6 col-md-3">
    181. <a href="#" class="text-center px-2 bg-white rounded d-inline-block position-relative">
    182. <img src="images/tmall-card-03.png" class="img-fluid" alt="">
    183. <h4 class="my-2 text-dark font-weight-bold">电子产品券</h4>
    184. <p class="text-muted">心意<br>从这一杯开始</p>
    185. <p class="caption">了解更多 ›</p>
    186. </a>
    187. </li>
    188. <li class="col-6 col-md-3">
    189. <a href="#" class="text-center px-2 bg-white rounded d-inline-block position-relative">
    190. <img src="images/tmall-card-04.png" class="img-fluid" alt="">
    191. <h4 class="my-2 text-dark font-weight-bold">咖啡生活</h4>
    192. <p class="text-muted">星巴克<br>用心制作</p>
    193. <p class="caption">了解更多 ›</p>
    194. </a>
    195. </li>
    196. </ul>
    197. </div>
    198. </div>
    199. <!-- 咖啡星讲堂 -->
    200. <div class="row bg-white overflow-hidden mb-5 pb-5 teah">
    201. <!-- 标题 -->
    202. <div class="col-12 text-center">
    203. <h3 class="my-4 text-dark">1912 派克街 | 咖啡星讲堂</h3>
    204. <p class="text-muted">了解更多星巴克咖啡文化</p>
    205. </div>
    206. <!-- 滚动内容 -->
    207. <div class="col-12">
    208. <div class="scroll pl-3">
    209. <ul class="list-unstyled d-flex justify-content-between">
    210. <li class="card">
    211. <a href="#"><img src="images/scroll_img_01.jpg" class="card-img-top" alt=""></a>
    212. <div class="card-body">
    213. <h4 class="card-title mb-0">咖啡的起源与培植</h4>
    214. </div>
    215. <span class="position-absolute text-white px-3 py-1">咖啡知识</span>
    216. </li>
    217. <li class="card">
    218. <a href="#"><img src="images/scroll_img_02.jpg" class="card-img-top" alt=""></a>
    219. <div class="card-body">
    220. <h4 class="card-title mb-0">咖啡品鉴</h4>
    221. </div>
    222. <span class="position-absolute text-white px-3 py-1">咖啡调制</span>
    223. </li>
    224. <li class="card">
    225. <a href="#"><img src="images/scroll_img_03.jpg" class="card-img-top" alt=""></a>
    226. <div class="card-body">
    227. <h4 class="card-title mb-0">咖啡知识</h4>
    228. </div>
    229. <span class="position-absolute text-white px-3 py-1">咖啡烘焙</span>
    230. </li>
    231. <li class="card">
    232. <a href="#"><img src="images/scroll_img_04.jpg" class="card-img-top" alt=""></a>
    233. <div class="card-body">
    234. <h4 class="card-title mb-0">咖啡品鉴</h4>
    235. </div>
    236. <span class="position-absolute text-white px-3 py-1">手冲咖啡</span>
    237. </li>
    238. </ul>
    239. </div>
    240. </div>
    241. </div>
    242. </div>
    243. </div>
    244. </div>
    245. <!-- 底部菜单 -->
    246. <footer class="fixed-bottom d-sm-none bg-white pb-2 footer">
    247. <ul class="row d-flex list-unstyled justify-content-around mb-0">
    248. <li class="text-center">
    249. <a href="#" class="text-muted active">
    250. <span class="iconfont icon-shouye d-block"></span>
    251. <span>首页</span>
    252. </a>
    253. </li>
    254. <li class="text-center">
    255. <a href="#" class="text-muted">
    256. <span class="iconfont icon-mendian d-block"></span>
    257. <span>门店</span>
    258. </a>
    259. </li>
    260. <li class="text-center">
    261. <a href="#" class="text-muted">
    262. <span class="iconfont icon-weibiaoti5 d-block"></span>
    263. <span>我的账户</span>
    264. </a>
    265. </li>
    266. <li class="text-center">
    267. <a href="#" class="text-muted">
    268. <span class="iconfont icon-caidan d-block"></span>
    269. <span>菜单</span>
    270. </a>
    271. </li>
    272. <li class="text-center">
    273. <a href="#" class="text-muted">
    274. <span class="iconfont icon-gengduo d-block"></span>
    275. <span>更多</span>
    276. </a>
    277. </li>
    278. </ul>
    279. </footer>
    280. <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
    281. integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
    282. crossorigin="anonymous"></script>
    283. <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
    284. integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
    285. crossorigin="anonymous"></script>
    286. <script>
    287. $('#showBtn').on('click',function(){
    288. $('.menu').removeClass('hide').addClass('show');
    289. shadowMenu();
    290. });
    291. $('#closeBtn').on('click',function(){
    292. $('.menu').removeClass('show').addClass('hide');
    293. shadowMenu();
    294. });
    295. $(window).resize(shadowMenu); /* 屏幕又发生改变 */
    296. //当菜单弹出的时候,不要让body出现滚动条。当菜单消失的时候再让body出现滚动条
    297. function shadowMenu(){
    298. //只有当屏幕尺寸小于992,以及menu菜单是显示的状态,这时才要干掉body的滚动条
    299. if($(window).innerWidth()<=992 && $('.menu').hasClass('show')){
    300. //console.log(1);
    301. $('body').css('overflow','hidden');
    302. }else{
    303. $('body').css('overflow','auto');
    304. }
    305. }
    306. </script>
    307. </body>
    308. </html>