flex布局的应用 —— 模仿携程移动端的首页

21 篇文章 0 订阅
订阅专栏
10 篇文章 0 订阅
订阅专栏

写在前面

昨天已经过去,未来还未到来,所以当下是上天给的最好的恩赐,好好把握。

昨天又很仔细的看了看flex布局,今天下午动手用flex布局做了一个练习,就是模仿携程移动端首页。有一段时间没写html和css了,今天就是使用纯html和css搭建的一个首页,没有用到js。不过页面中确实有一个点可以用js做比较轻松,就是可以使用循环来生成精灵图,因为今天想写样式了,就没有用js写,下次再用js写一遍。

看到页面时,感觉不难。咳咳咳咳咳咳咳。。。。。 在写的时候,真的是各种的慢动作,还有用了一下午做出来的。这次的效果自我感觉比上次写京东移动端首页好点,可能是用的布局方式不同造成的吧。真心,flex布局就是比较好用。

家里停电了,电脑要没电了,废话不多说感觉撸,撸完就关机了。

ok,下面先看看我做的效果。

就是这样一个移动端的首页。emmm,我还不知道怎么使用真机测试,有空了也可以去试试看看怎么用真机来显示页面,哈哈哈哈。

温馨提示:我做的页面的图都是在携程网上自己扒的图。要是有想做的童鞋可以去扒扒图。

 

布局分析

顶部导航:使用固定定位做,主要提升层级,它是在最上层显示。

banner部分:这部分就是图片连接吧,很奇特的没有使用轮播图。

局部导航部分:local-nav。这个部分可以使用flex布局做。小图标跟文字都用span标签做。携程原版也是这样的布局。图标部分就是使用二倍精灵图来做的,要注意位置的设置。

导航栏部分:nav-common。 这个部分同样是使用flex布局。有一点麻烦的地方就是他们的背景色是渐变背景色,还有就是子元素的flex属性的设置不同。背景图片同样是使用二倍精灵图的做法。

侧边栏导航部分:subnav-entry。这部分的布局同样使用flex,它与局部导航栏的不同点就是,子元素的flex属性要使用百分比,父元素要设置换行。二倍精灵图的使用。

销售部分:sales-box。这个地方分为头部和主体部分。头部主要是用定位做,主体部分使用flex布局做。

最后底部部分:footer。flex布局搞定。

大概的一个布局就是这样。再仔细的话就有点啰嗦了。整体的思路,搭建的时候,一定要一边分析一边写,不然容易混乱。

 

核心点

这个案例的核心点,就是如何使用flex布局来布局页面,以及二倍图的使用。需要注意的是,我们用flex布局,不是整个页面都是flex布局,而是以flex局部为主,其他布局为辅进行的。

下一步的目标是:深入理解flex:1。这一句代码的含义。

 

代码部分

页面结构

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>携程在手,说走就走</title>
    <link rel="stylesheet" href="css/normalize.css">
    <link rel="stylesheet" href="css/index.css">
</head>

<body>
    <!-- 顶部搜索栏部分 固定定位 -->
    <div class="short-search">
        <!-- 搜索框 其实它并不是一个搜索框 就是形状相似而已 当点击时才会跳转到搜索页面 -->
        <div class="search">
            <p>搜索:目的地/酒店/景点/航班号</p>
        </div>
        <div class="user">
            <span class="user-icon"> </span>
            <span>我 的</span>
        </div>
    </div>
    <!-- banner -->
    <div class="banner">
        <a href="#">
            <img src="upload/banner.jpg">
        </a>
    </div>
    <!-- local-nav -->
    <ul class="local-nav">
        <li>
            <a href="#">
                <span class="local-nav-icon-icon1"></span>
                <span class="local-nav-iconContent">攻略·景点</span>
            </a>
        </li>
        <li>
            <a href="#">
                <span class="local-nav-icon-icon2"></span>
                <span class="local-nav-iconContent">门票·玩乐</span>
            </a>
        </li>
        <li>
            <a href="#">
                <span class="local-nav-icon-icon3"></span>
                <span class="local-nav-iconContent">美食林</span>
            </a>
        </li>
        <li>
            <a href="#">
                <span class="local-nav-icon-icon4"></span>
                <span class="local-nav-iconContent">周边游</span>
            </a>
        </li>
        <li>
            <a href="#">
                <span class="local-nav-icon-icon5"></span>
                <span class="local-nav-iconContent">一日游</span>
            </a>
        </li>
    </ul>
    <!-- system_notice -->
    <div class="system_notice">
        <p>受新冠疫情影响,各国家及地区入境政策汇总查看</p>
    </div>
    <!-- nav -->
    <nav class="nav-wrap">
        <div class="nav-common row1">
            <div class="nav-items">
                <a href="#">酒店</a>
            </div>
            <div class="nav-items">
                <a href="#">民宿·客栈</a>
            </div>
            <div class="nav-items">
                <span class="specious">方便又便宜</span>
                <a href="#">机票/火车票+酒店</a>
            </div>
        </div>
        <div class="nav-common row2">
            <div class="nav-items">
                <a href="#">飞机</a>
            </div>
            <div class="nav-items">
                <a href="#">火车票</a>
            </div>
            <div class="nav-items">
                <a href="#">汽车·船票</a>
            </div>
            <div class="nav-items">
                <a href="#">专车·租车</a>
            </div>
        </div>
        <div class="nav-common row3">
            <div class="nav-items">
                <a href="#">旅游</a>
            </div>
            <div class="nav-items">
                <a href="#">高铁游</a>
            </div>
            <div class="nav-items">
                <a href="#">邮轮游</a>
            </div>
            <div class="nav-items">
                <a href="#">定制游</a>
            </div>
        </div>
    </nav>
    <!-- subnav-entry -->
    <ul class="subnav-entry">
        <li>
            <a href="">
                <span class="subnav-entry-icon-icon1"></span>
                <span>自由行</span>
            </a>
        </li>
        <li>
            <a href="">
                <span class="subnav-entry-icon-icon2"></span>
                <span>WiFi电话卡</span>
            </a>
        </li>
        <li>
            <a href="">
                <span class="subnav-entry-icon-icon3"></span>
                <span>保险·签证</span>
            </a>
        </li>
        <li>
            <a href="">
                <span class="subnav-entry-icon-icon4"></span>
                <span>换钞·购物</span>
            </a>
        </li>
        <li>
            <a href="">
                <span class="subnav-entry-icon-icon5"></span>
                <span>当地向导</span>
            </a>
        </li>
        <li>
            <a href="">
                <span class="subnav-entry-icon-icon6"></span>
                <span>特价机票</span>
            </a>
        </li>
        <li>
            <a href="">
                <span class="subnav-entry-icon-icon7"></span>
                <span>礼品卡</span>
            </a>
        </li>
        <li>
            <a href="">
                <span class="subnav-entry-icon-icon8"></span>
                <span>申卡·借钱</span>
            </a>
        </li>
        <li>
            <a href="">
                <span class="subnav-entry-icon-icon9"></span>
                <span>旅拍</span>
            </a>
        </li>
        <li>
            <a href="">
                <span class="subnav-entry-icon-icon10"></span>
                <span>更多</span>
            </a>
        </li>
    </ul>
    <!-- sales-box -->
    <div class="sales-box">
        <div class="sales-hd">
            <h2>热门活动</h2>
            <p>获取更多福利</p>
        </div>
        <div class="sales-bd">
            <div class="row">
                <a href="#">
                    <img src="upload/pic1.jpg">
                </a>
                <a href="#">
                    <img src="upload/pic2.jpg">
                </a>
            </div>
            <div class="row">
                <a href="#">
                    <img src="upload/pic3.png">
                </a>
                <a href="#">
                    <img src="upload/pic4.jpg">
                </a>
            </div>
            <div class="row">
                <a href="#">
                    <img src="upload/pic5.jpg">
                </a>
                <a href="#">
                    <img src="upload/pic6.jpg">
                </a>
            </div>
        </div>
    </div>
    <!-- footer -->
    <footer>
        <div class="tel">
            <span class="tel-icon"></span>
            <span>电话预约</span>
        </div>
        <div class="download">
            <span class="download-icon"></span>
            <span>下载客户端</span>
        </div>
        <div class="about">
            <span class="about-icon"></span>
            <span>我的</span>
        </div>
    </footer>
</body>

</html>

样式部分

body {
    /* 不出现水平滚动条 */
    overflow-x: hidden;
    /* 按钮不显示高亮 */
    -webkit-tap-highlight-color: transparent;
    -webkit-text-size-adjust: none;
    -moz-user-select: none;
    max-width: 540px;
    min-width: 320px;
    margin: 0 auto;
    background: #fafafc;
    font-size: 12px;
    /* 一会回来删 */
    /* height: 3000px; */
}

div {
    box-sizing: border-box;
}

p {
    margin: 0;
}

ul {
    list-style: none;
    margin: 0;
    padding: 0;
}


a {
    text-decoration: none;
}

/* 顶部快捷导航 */
.short-search {
    position: fixed;
    z-index: 50;
    top: 0;
    width: 100%;
    max-width: 540px;
    height: 44px;
    /* background-color: pink; */
    /* 当下面得图片没有时,会有背景色 */
    /* background: -webkit-linear-gradient(top, rgba(0, 0, 0, .2), rgba(255, 255, 255, .4)); */
}

/* user */
.user {
    display: flex;
    /* 上下排列 设置主轴为y轴 */
    flex-direction: column;
    /* 沿着侧轴 水平居中 */
    align-items: center;
    position: absolute;
    top: 0;
    right: 0;
    width: 51px;
    height: 44px;
    /* background-color: purple; */
}

.user-icon {
    width: 22px;
    height: 22px;
    background: url(../images/short-search-sprite2x.png) no-repeat 1px -36px;
    /* 手动更改精灵图得大小 二倍图 缩小一半 */
    background-size: 21px auto;
    margin: 3px 0;
}

.user span {
    flex: 1;
    color: #eee;
}

/* search */
.search {
    position: absolute;
    left: 5px;
    width: 85%;
    height: 28px;
    background-color: #fff;
    border-radius: 20px;
    margin: 8px;
}

.search p {
    line-height: 28px;
    padding-left: 36px;
    color: #aaa;
    font-size: 14px;
}

.search p::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 35px;
    height: 28px;
    background: url(../images/short-search-sprite2x.png) no-repeat 15px 7px;
    background-size: 21px auto;
}

/* banner */
.banner {
    position: relative;
    width: 100%;
    overflow: hidden;
    /* 降低层级 */
    z-index: -1;
}

.banner img {
    width: 100%;
    height: 50%;
    /* border-radius: 0 0 80px 80px; */
    margin-top: -50px;
    vertical-align: top;
}

/* local-nav */
.local-nav {
    display: flex;
    height: 64px;
    margin: -70px 12px 10px;
    background-color: #fff;
    border-radius: 10px;
    padding: 8px;
}


.local-nav li {
    /* 作为子元素 占份数1 */
    flex: 1;
}

.local-nav a {
    /* 作为子元素 占1份 */
    flex: 1;

    /* 作为父元素 flex布局 */
    display: flex;
    /* 设置主轴为Y轴 垂直排列 */
    flex-direction: column;
    /* 子元素在侧轴中居中 a中的span元素*/
    align-items: center;
}

.local-nav a [class^="local-nav-icon-"] {
    width: 40px;
    height: 40px;
    background-color: pink;
    background: url(../images/home-fivemain-sprite2x.png) no-repeat 0 0;
    background-size: 40px auto;
    margin-bottom: 3px;
}

.local-nav a .local-nav-icon-icon2 {
    background-position: 0 -40px;
}

.local-nav a .local-nav-icon-icon3 {
    background-position: 0 -80px;
}

.local-nav a .local-nav-icon-icon4 {
    background-position: 0 -120px;
}

.local-nav a .local-nav-icon-icon5 {
    background-position: 0 -160px;
}

.local-nav li .local-nav-iconContent {
    color: #222;
    line-height: 1;
}

.system_notice {
    position: relative;
    height: 45px;
    margin: 12px;
    background-color: #ffecdc;
    border-radius: 20px;
    line-height: 45px;
}

.system_notice::before {
    position: absolute;
    top: 0;
    left: 10px;
    content: '\f504';
    width: 10px;
    height: 10px;
    color: #fc8c6f;
}

.system_notice::after {
    position: absolute;
    top: 0;
    right: 10px;
    content: '\e944';
    width: 10px;
    height: 10px;
    color: #666;
}

.system_notice p {
    padding-left: 30px;
}

/* nav */
.nav-wrap {
    border-radius: 8px;
    margin: 0 12px;
    overflow: hidden;
}

.nav-common {
    display: flex;
    height: 88px;
    background-color: pink;
    justify-content: center;
    align-items: center;

}

.nav-items a {
    display: block;
    color: #fff;
    font-size: 14px;
    height: 88px;
    line-height: 88px;
}

/* 从第二个元素开始 */
.nav-items:nth-child(n+1) a {
    text-align: center;
}

.nav-items:first-child a {
    margin-left: 10px;
    text-align: left;
}


.row1 .nav-items:nth-child(1) {
    flex: 1.5;
    background: linear-gradient(to right, #fa5a56, #fa7252);
}

.row1 .nav-items:nth-child(1) a {
    background: url(../images/nav-items-hotel.png) no-repeat bottom right;
    background-size: 108px auto;
}

.row1 .nav-items:nth-child(2) {
    flex: 1;
    background: linear-gradient(to right, #fa7252, #fb8550);
}

.row1 .nav-items:nth-child(2) a {
    background: url(../images/nav-items-minsu.png) no-repeat bottom left;
    background-size: 53px auto;
}

/* 前两个元素添加右边框 */
.row1 .nav-items:nth-child(-n+2) {
    border-right: 1px solid #fff;
}

.row1 .nav-items:nth-child(3) {
    flex: 2;
    position: relative;
    /* 第一行的三个元素渐变色 覆盖掉上面的那个渐变色 */
    background: linear-gradient(to right, #ffbc49, #ffd252);
}

.row1 .nav-items:nth-child(3) a {
    background: url(../images/nav-items-jhj.png) no-repeat bottom right;
    background-size: 87px auto;
}

.row1 .nav-items .specious {
    position: absolute;
    top: 20px;
    right: 48px;
    background-color: red;
    border-radius: 20px 20px 20px 0;
    color: #fff;
    padding: 2px 5px;
    font-size: 10px;
}

.row2 {
    border-top: 1px solid #fff;
    border-bottom: 1px solid #fff;
    background: linear-gradient(to right, #4b8fed, #53bced);
}

/* 前三个元素添加边框 */
.row2 .nav-items:nth-child(-n+3),
.row3 .nav-items:nth-child(-n+3) {
    border-right: 1px solid #fff;
}

.row2 .nav-items:first-child {
    flex: 1.5;
    background: url(../images/nav-items-flight.png) no-repeat bottom right;
    background-size: 120px auto;
}

.row2 .nav-items,
.row3 .nav-items {
    flex: 1;
}

.row2 .nav-items:nth-child(2) {
    background: url(../images/nav-items-train.png) no-repeat bottom left;
    background-size: 56px auto;
}

.row3 {
    background: linear-gradient(to right, #34c2a9, #6cd558);
}

.row3 .nav-items:first-child {
    flex: 1.5;
    background: url(../images/nav-items-travel.png) no-repeat bottom right;
    background-size: 140px auto;
}

.row3 .nav-items:nth-child(2) {
    background: url(../images/nav-items-dingzhi.png) no-repeat bottom left;
    background-size: 92px auto;
}

/* subnav-entry */
.subnav-entry {
    display: flex;
    /* 里面的li要换行 */
    flex-wrap: wrap;
    padding: 10px 0 8px;
    border-bottom: 1px solid #eee;
    margin-bottom: 3px;
}

.subnav-entry li {
    /* 每个li占20%  可以是百分比 */
    flex: 20%;

}

/* li里面的a flex布局 控制span */
.subnav-entry li a {
    display: flex;
    flex-direction: column;
    align-items: center;
    color: #222;
    font-size: 8px;
}

.subnav-entry li a span:nth-child(2) {
    margin: 5px 0;
}

.subnav-entry [class^='subnav-entry-icon'] {
    width: 28px;
    height: 28px;
    background-color: pink;
    background: url(../images/ico_subnav2x.png) no-repeat 0 0;
    background-size: 28px auto;
}

.subnav-entry .subnav-entry-icon-icon2 {
    background-position: 0 -28px;
}

.subnav-entry .subnav-entry-icon-icon3 {
    background-position: 0 -56px;
}

.subnav-entry .subnav-entry-icon-icon4 {
    background-position: 0 -84px;
}

.subnav-entry .subnav-entry-icon-icon5 {
    background-position: 0 -112px;
}

.subnav-entry .subnav-entry-icon-icon6 {
    background-position: 0 -140px;
}

.subnav-entry .subnav-entry-icon-icon7 {
    background-position: 0 -168px;
}

.subnav-entry .subnav-entry-icon-icon8 {
    background-position: 0 -196px;
}

.subnav-entry .subnav-entry-icon-icon9 {
    background-position: 0 -224px;
}

.subnav-entry .subnav-entry-icon-icon10 {
    background-position: 0 -252px;
}

/* sales-box */
.sales-hd {
    position: relative;
    border-bottom: 1px solid #eee;
    border-top: 1px solid #eee;
    padding: 10px 0;
}

.sales-hd h2 {
    text-indent: -9999px;
    overflow: hidden;
    padding: 0;
    margin: 0;
}

.sales-hd h2::before {
    content: "";
    position: absolute;
    top: 13px;
    left: 15px;
    width: 79px;
    height: 15px;
    background-color: pink;
    background: url(../images/hot.png) no-repeat 0 -20px;
    background-size: 79px auto;
}

.sales-hd p {
    position: absolute;
    top: 7px;
    right: 8px;
    height: 20px;
    border-radius: 15px;
    background: linear-gradient(to right, #FF506C, #FF6BC6);
    padding: 3px 20px 2px 7px;
    line-height: 20px;
    color: #fff;
}

.sales-hd p::after {
    content: "";
    position: absolute;
    top: 8px;
    right: 9px;
    width: 7px;
    height: 7px;
    border-right: 2px solid #fff;
    border-top: 2px solid #fff;
    transform: rotate(45deg);
}

.sales-hd p:hover {
    cursor: pointer;
}

/* sales-bd */
.row {
    display: flex;
}

.row a {
    flex: 1;
    border-bottom: 1px solid #eee;
}

.row a:first-child {
    border-right: 1px solid #eee;
}

.row a img {
    width: 100%;
    vertical-align: top;
}

/* footer */
footer {
    display: flex;
    border-top: 1px solid #ccc;
    margin: 8px 0;
    background-color: #fff;
    padding-bottom: 10px;
}

footer div {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
}


footer div span:first-child {
    width: 20px;
    height: 20px;
    background-color: pink;
    margin: 15px 0 5px 0;
    background: url(../images/bottom-bg.png) no-repeat;
    background-size: 104px auto;
}

footer .tel .tel-icon {
    background-position: -59px -154px;

}

footer .download .download-icon {
    background-position: -59px -174px;
}

footer .about .about-icon {
    background-position: -59px -309px;
}

 

 

 

 

 

 

 

使用flex布局编写携程网移动端首页
qq_40247817的博客
04-15 655
使用flex布局编写携程网移动端首页效果展示HTML代码index.css 效果展示 HTML代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>携程网</title&gt
flex布局携程网移动端首页案例
weixin_55701027的博客
12-21 1098
html + css 前端flex布局基础案例
android 携程首页翻页动画,Android 仿携程购票地址互换效果
weixin_36352023的博客
05-26 229
今天项目经理给了个需求,大改意思就是说,两种货币可以互相兑换的,说白了就是类似于携程购票地址切换这种效果,废话不多说上才艺:效果:片.pngxml布局:xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/constrain...
android 携程页面,android 仿携程首页源码(自定义button)
weixin_39947961的博客
05-28 933
【实例简介】【实例截】【核心代码】package com.example.xiechengdemo;import android.content.Context;import android.content.res.TypedArray;import android.util.AttributeSet;import android.util.Log;import android.view.Mot...
移动WEB开发之flex布局--携程网首页案例制作
薛定谔的猫
11-30 861
做法:1.打开PS缩放一半 2.量出需要的标,在css设置top和left负值 3.css将缩放后的大小重新给就是background-size。起始方向可以是: 方位名词 或者 度数 , 如果省略默认就是top。方案:我们采取单独制作移动页面方案。要设置为主轴为y轴,侧轴居。背景渐变必须添加浏览器私有前缀。技术布局采取flex布局。利用属性选择器更换背景片。sales-bd模块制作。第一个a要取消下边框。
ctrip android view,GitHub - kuangxiaoguo0123/CtripHomeScaleView: Android仿携程首页按压缩放效果view...
weixin_31363715的博客
05-27 135
CtripHomeScaleViewAndroid仿携程首页按压缩放效果viewScreenshots实现动画/*** Init scale animation*/private void initAnimation() {ObjectAnimator beginXAnimation = ObjectAnimator.ofFloat(this, "scaleX", ONE_SCALE, SMALL...
flex布局-携程网-移动端
02-23
本项目“flex布局-携程网-移动端”旨在通过运用Flex布局,来构建携程网的主页面、我的页面以及登录页面,确保在不同设备上都能呈现出良好的用户体验。 Flex布局,全称为Flexible Box布局,它允许容器的子元素在行...
flex布局项目——携程在线首页(原生轮播效果).zip
04-16
携程在线首页。适合零基础入门的人使用的demo,对布局这块有不错的参考价值!采用的是flex布局使用了原生js实现的tab栏切换等。自己可以通过swiper插件或者TouchSlide插件以及bootstrap框架来替换!可以把这个demo...
携程首页flex布局-移动端
03-08
三、携程首页Flex布局应用携程首页的实现Flex布局可能被广泛应用于以下几个方面: 1. 导航栏:使用Flex布局,可以让导航栏的各个元素在不同屏幕尺寸下保持良好的对齐和间距,如Logo、搜索框和菜单按钮...
移动WEB开发 之 flex布局----携程网移动端首页案例
不爱吃菜的菜菜的博客
05-11 2167
前端学习用flex布局来写携程首页(因为携程和老师讲的版本不一样,我就用了很多关于现在携程片来替代)
移动端页面(弹性盒模型布局
08-23
弹性盒模型布局仿某宝个人心页面,涉及rem,在线小标的使用
仿携程主页菜单栏滚动置顶&条件筛选之多个单选弹出
07-05
仿携程主页菜单栏滚动置顶以及条件筛选功能,当点击时,点击控件以下弹出选项卡并且选项卡以下部分灰色半透明模板。点击控件以上颜色不变。
仿携程网手机端
06-14
仿携程网手机端页面,有需要的朋友可以下载使用,谢谢
仿美团首页html模板
06-21
仿美团首页html模板仿美团首页html模板仿美团首页html模板
android高仿携程,Android 仿去哪儿携程地址互换效果
weixin_34856060的博客
05-25 175
昨天朋友项目有个需求让我帮忙看看怎么搞,就跟去哪儿携程买机票时点间按钮互换出发地和目的地的效果,当时一看觉得挺简单,用补间动画,在动画完成时设置给两边各textview互换值就好,做出来后发现效果不好,在最后互换值得时候会有闪烁,于是就用了一种较为麻烦的方法,不过效果是达到了,记录一下。gif效果不好...gif效果不好,实际很顺滑内容简单说下思路,在点击互换按钮后:计算互换位置的需要的偏移...
Flex布局 - 仿携程网移动端首页案列练习
JHY97的博客
01-10 1803
一、搭建相关文件结构 1.1 文件结构 创建相关存储文件夹以及搭建index.html文件结构 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=de.
flex布局携程网案列
weixin_42378409的博客
04-03 453
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-...
Flex布局实战(1) 携程旅游
banxiecang9548的博客
09-08 389
项目地址:https://github.com/C4az6/xiechen 在线演示地址:https://c4az6.github.io/xiechen/ 转载于:https://www.cnblogs.com/sauronblog/p/11487309.html
如何使用弹性布局模拟携程旅行页面?
最新发布
ljhfi的博客
03-18 278
携程旅行这个练习主要用弹性布局。 display:flex; justify-content:属性值; align-items:属性值;
Flex布局详解:携程移动端项目实践
"该资源是一个关于使用Flex布局技术移动端制作携程网项目的教程,主要涵盖了Flex的父容器属性,如主轴方向、子元素排列方式、换行、侧轴定位等核心概念。" 在移动端网页开发Flex布局(Flexible Box Layout)...
写文章

热门文章

  • Swiper插件 实现轮播图 11023
  • 原生js小游戏 7840
  • JS工具库moment —— 实现日历 7184
  • JS实现简易留言板——节点操作 6033
  • 购物车结算功能模块 5490

分类专栏

  • webpack 6篇
  • git知识汇总 1篇
  • 设计模式 3篇
  • Web—第一阶段 25篇
  • Web—CSS初级 21篇
  • Javascript基础 34篇
  • 练习实例 21篇
  • Web—第二阶段 21篇
  • H5+C3 10篇
  • JavaScript高级 14篇
  • ECMAScript5和ECMAScript6 5篇
  • 前端必会的网络知识 4篇
  • jQuery 12篇
  • Bootstrap前端框架 2篇
  • VSCode 3篇
  • 工具类 2篇
  • 算法 4篇
  • 学习心得体会 7篇

最新评论

  • 原生js小游戏

    孤江独钓,江湖路人: 这种水平属于什么级别,我是小白,啥时候能做到这样

  • JS实现表单复选框的全选和取消

    错赴旧梦: 黑马程序员

  • JS实现简易留言板——节点操作

    AAS48: 不错呀

  • 原生js小游戏

    苍岚王: 我想了想在右上角的按钮可以加上一个小功能,监听键盘点击后,按钮active变色,感觉还是比较nice的

  • 原生js小游戏

    苍岚王: 确实很赞,这个小游戏里面很充分的利用了数学里面等量代换的思想,因为要实现移动所以要定帧,所以,是必定要定时器的,而这个时候用flag去改变路径是很巧妙的思想,我个人觉得比较难的地方是怎么合理且优雅的写出监听和路径的改变,这些代码都能满足,只能说一句博主nb

大家在看

  • 2024新群体优化算法MISBOA---基于多智能体模拟退火的旅行商问题TSP求解,附带创新方向 392

最新文章

  • HTTP 协议缓存
  • 前端网络之同源策略
  • JS 进阶笔记总结
2023年3篇
2022年8篇
2021年5篇
2020年111篇
2019年10篇

目录

目录

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳坪山网站建设公司宣城网站排名优化服务公司芝罘智能响应式网站优化鸡西网站优化seo培训合肥网站优化选哪家网站优化收费低如何建设和优化一个网站网站优化过程中常见的误区本地网站优化价格开平专业的网站优化哪家好网站关键词推广优化北京网站维护优化江门公司网站关键词优化工具宁波企业网站优化运营公司好的网站推广与优化咨询热线红旗区网站排名优化公司哪里有网站平台市场推广优化建议模板网站如何做优化邯郸家装行业网站优化推广价格电子商务网站优化技巧网站优化服务运营西安市网站seo优化排名网站优化与关键词宜良网站优化报价嘉定区公司网站优化方案定制福建广电网站优化产品介绍网站更新优化帖子不见了网站结构优化方案论文网上推广网站的推广关键词优化实力强的网站推广与优化公司快速的网站排名优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

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