1.Bootstrap

本贴最后更新于 1983 天前,其中的信息可能已经斗转星移

1.Bootstrap

40.png

1.简介

1 什么是 bootstrap?

bootstrap 是当下最流行的前端框架(界面工具集);

特点是灵活简单、代码优雅、美观大方;

目的在于让 web 开发更加迅速、敏捷;

Twitter 公司的两名前端工程师 Mark Otto 和 Jacob Thornton 在 2011 年发起的,并利用业余时间完成了第一个版本的开发。

2 什么是框架?

库 lib library

写的更少做的更多 提供一套较为便捷的操作方式;

将一套功能体系封装到一个单独的文件中的东西;

Bootstrap 提供一套前端需要的界面工具集合。

3 为什么使用 Bootstarp?

  • 生态圈火,不断地更新迭代;

  • 提供一套美观大方的界面组件

  • 响应式界面,移动设备优先;

  • 让我们的 Web 开发更简单,更快捷

注意:

  1. 使用 Bootstrap 并不代表不用写 CSS 样式,而是不用写绝大多数大家都会用到的样式
  2. Bootstrap 不是 BootStrap!这是一个词,不是合成词,其含义为:n. 引导指令,引导程序

官网 :http://www.bootcss.com/

github 地址: https://github.com/twbs/bootstrap

2.Bootstrap 初体验

Boostrap 依赖 Jquery

1.项目集成 BootStrap

41.png

2.Bootstrap 初体验

视口 viewport:可以说是一个虚拟的窗口,默认是 980px

<!DOCTYPE html> <html lang="zh-CN"> <head> <!--设置编码 gbk gb2312 utf-8--> <meta charset="utf-8"> <!-- 告诉IE浏览器以最新的 解析器 去解析当前的页面, content="IE=edge"中的edge代表是最新的解析器,也可以说是IE-11。 content="IE=10" 代表指定使用IE-10的解析器 --> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- 兼容移动设备 视口:虚拟的窗口,默认是980px --> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! --> <title>01-Bootstrap基本模板</title> <!-- 引入Bootstrap --> <link href="bootstrap/dist/css/bootstrap.css" rel="stylesheet"> <!-- 如果IE浏览器版本小于9,将使用下面两个库(): html5shiv:让版本小于9的IE浏览器,也能够使用h5的标签 respond: 让版本小于9的IE浏览器,也能够使用C3的样式 --> <!--[if lt IE 9]> <script src="js/html5shiv.min.js"></script> <script src="js/respond.min.js"></script> <![endif]--> </head> <body> <h1>你好,世界!</h1> <!-- Bootstrap这个个框架依赖jQuery; jquery从1.9版本以后不再兼任ie9以下浏览器(推荐1.9.1) --> <script src="jquery/jquery-3.2.0.js"></script> <script src="bootstrap/dist/js/bootstrap.js"></script> </body> </html>

####3.最简单的使用

组件:button , button -group , input , progress , 字体图标

<!--按钮--> <button class="btn btn-default">普通按钮</button> <button class="btn btn-success">成功</button> <button class="btn btn-danger">危险</button> <!--按钮组--> <div class="btn-group" role="group" aria-label="..."> <button type="button" class="btn btn-default">Left</button> <button type="button" class="btn btn-success">Middle</button> <button type="button" class="btn btn-default">Right</button> </div> <div class="btn-toolbar" role="toolbar" aria-label="..."> <div class="btn-group" role="group" aria-label="..."> <button type="button" class="btn btn-default">1</button> <button type="button" class="btn btn-default">2</button> <button type="button" class="btn btn-default">3</button> </div> <div class="btn-group" role="group" aria-label="..."> <button type="button" class="btn btn-default">4</button> <button type="button" class="btn btn-default">5</button> <button type="button" class="btn btn-default">5</button> </div> <div class="btn-group" role="group" aria-label="..."> <button type="button" class="btn btn-default">6</button> <button type="button" class="btn btn-default">7</button> <button type="button" class="btn btn-default">8</button> </div> </div> <!--文本框--> <div class="input-group" style="width: 300px"> <span class="input-group-addon" id="basic-addon1" style="width: 100px">@ @ </span> <input type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1"> </div> <div class="input-group" style="width: 300px"> <span class="input-group-addon" id="basic-addon3" style="width: 100px">@</span> <input type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1"> </div> <div class="input-group"> <input type="text" class="form-control" placeholder="Recipient's username" aria-describedby="basic-addon2"> <span class="input-group-addon" id="basic-addon2">@example.com</span> </div> <!--进度条--> <div class="progress"> <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 40%;"> 40% </div> </div>

4.视口 ViewPort

什么是视口? 窗口

每个网页默认都会有一个视口,视口其实是一个虚拟的窗口 ,默认的尺寸是 980 像素;
为了兼容移动设备,一般让网页视口的宽度和设备的宽度的比例为 1:1 , 并且不允许用户缩放网页;

<!-- viewport: 视口 width=device-width : 视口的宽 等于 设备的宽 user-scalable : 不允许网页进行缩放 initial-scale :初始化缩放为1 maximum-scale=1.0 : 最大缩放为1 minimum-scale=1.0 : 最小缩放为1 --> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

5.Bootstrap 常用的组件

1.面板

<div class="panel panel-danger"> <div class="panel-heading"> 今天天气很好! </div> <div class="panel-body"> 风和日丽! </div> <div class="panel-footer"> 2019-10-21 </div> </div>

2.徽章

<span class="badge" style="background-color: red">10</span> <div class="badge" style="background-color: red">20</div> <button type="button" class="btn btn-danger"> <span class="badge" style="background-color: red">30</span> </button> <a href="">input <span class="badge" style="background-color: red">23</span> </a>

3.模态框

<!--弹出模态框 data-target="#myModel" 指定弹出的目标 (值是: 选择器) data-toggle="model" 以模态框的方式弹出 data-dismiss="modal" 以模态框的方式消失 --> <button class="btn btn-success" data-toggle="modal" data-target="#myModal">立即登录</button> <!--模态框--> <div class="modal fade" id="myModal" tabindex="-1" role="dialog"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <h4 class="modal-title">欢迎登陆考试中心</h4> </div> <div class="modal-body"> <div> 用户名:<input type="text" placeholder="请输入用户名"> </div> <div> 密&nbsp;&nbsp;&nbsp;码:<input type="password" placeholder="请输入密码"> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">取消</button> <button type="button" class="btn btn-primary">登录</button> </div> </div>< </div> </div>

1.显示或者隐藏模态框方式一( 添加属性 ):

//调出模态框: //data-target="#myModal" 指定弹出的目标(值是:选择器) //data-toggle="modal" 指定以模态框的方式弹出 //data-dismiss="modal" 指定以模态框的方式消失 <button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>

2.显示或者隐藏模态框方式二 ( 调用 js 代码 ):

$('#myModal').modal('show'); // 通过js代码显示模态框

3.监听模态框的显示和隐藏

$('#myModal').on('show.bs.modal', function (e) { console.log('模态框显示时回调'); }) $('#myModal').on('hidden.bs.modal', function (e) { console.log('模态框隐藏时回调'); })

2.Bootstrap 小案例

1 新建项目

使用 bootstrap 与 Jquery 框架技术 ;

其中 boostrap 依赖 Jquery

07.png

2 BootStrap 页面的简单配置

1.配置 : 网页的宽等于设备的宽

2.初始化网页的缩放比例为 1

3 实现导航条组件

注意: 导航条 组件的 nav 默认的高度是 50px 并且 margin-bottom:20px

<!--导航条--> <!-- data-toggle="collapse" 指定以折叠的方式切换目标 data-target="#nav_content" 指定要折叠的目标 data-toggle="modal"  指定以模态框的方式打开目标 data-toggle="dropdown" 指定以下拉的方式打开目标 role: 是用来增强语义性,没有什么其它功能,可以删除。 sr-only 和 aria-xx : 是屏幕阅读辅助,兼容残障人使用的设备--> <nav class="navbar navbar-default"> <div class="container-fluid"> <!-- Brand and toggle get grouped for better mobile display --> <!--品牌 和 一个移动端展示的按钮--> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#nav_content" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#"> <img src="./img/header_logo.png" alt="" style="width: 100px"> </a> </div> <!--导航条的内容--> <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="nav_content"> <ul class="nav navbar-nav"> <li class="active"><a href="#">首页 <span class="sr-only">(current)</span></a></li> <li><a href="#">蛋糕</a></li> <li><a href="#">下午茶</a></li> <li><a href="#">精选食材</a></li> <li><a href="#">最新活动</a></li> <li><a href="#">企业专区</a></li> <li><a href="#">会员中心</a></li> </ul> <ul class="nav navbar-nav navbar-right"> <li><a href="#">登录</a></li> <li><a href="">注册</a></li> </ul> </div><!-- /.navbar-collapse --> </div><!-- /.container-fluid --> </nav>

4 设计导航条样式

  • 添加 .navbar-fixed-top 类可以让导航条固定在浏览器的顶部

    注意:固定的导航条会遮住页面上的其他的内容,可给 <body> 设计 padding

  • 导航条包含一个 .container 或者 .container-fluid 容器,从而让导航条居中显示或者自适应显示

  • 添加 .navbar-inverse 可以改变导航栏显示的背景颜色

5 实现 轮播图 (js 插件)和 样式

06.png

<!-- 以下容器就是整个轮播图组件的整体, 注意该盒子必须加上 class="carousel slide" data-ride="carousel" 表示当前是一个轮播图 bootstrap.js会自动为当前元素添加图片轮播的特效 --> <!--广告轮播图--> <div id="sz-banner" class="carousel slide" data-ride="carousel"> <!-- 点 --> <!-- ol标签是图片轮播的控制点 --> <ol class="carousel-indicators"> <!-- 每一个li就是一个单独的控制点 data-target属性就是指定当前控制点控制的是哪一个轮播图,其目的是如果界面上有多个轮播图,便于区分到底控制哪一个 data-slide-to属性是指当前的li元素绑定的是第几个轮播项 注意,默认必须给其中某个li加上active,展示的时候就是焦点项目 --> <li data-target="#sz-banner" data-slide-to="0" class="active"></li> <li data-target="#sz-banner" data-slide-to="1"></li> <li data-target="#sz-banner" data-slide-to="2"></li> <li data-target="#sz-banner" data-slide-to="3"></li> </ol> <!-- 内容 --> <!-- .carousel-inner是所有轮播项的容器盒子, 注意role="listbox"代表当前div是一个列表盒子,作用就是给当前div添加一个语义 --> <div class="carousel-inner" role="listbox"> <!-- 每一个.item就是单个轮播项目,注意默认要给第一个轮播项目加上active,表示为焦点 --> <div class="item active"> <!-- 轮播项目中展示的图片 --> <img src="./img/banner1.jpg" alt="..."> <!-- 标题或说明性文字,如果不需要,直接删除当前div.carousel-caption --> <div class="carousel-caption"> </div> </div> <div class="item"> <img src="./img/banner2.jpg" alt="..."> <div class="carousel-caption"> </div> </div> <div class="item"> <img src="./img/banner3.jpg" alt="..."> <div class="carousel-caption"> </div> </div> <div class="item"> <img src="./img/banner4.jpg" alt="..."> <div class="carousel-caption"> </div> </div> </div> <!-- 控制器 上一张 --> <!-- 图片轮播上左右两个控制按钮,分别点击可以滚动到上一张和下一张 --> <!-- 此处需要注意的是 该a链接的href属性必须指向需要控制的轮播图ID --> <!-- 另外a链接中的data-slide="prev"代表点击该链接会滚到上一张,如果设置为next的话则相反 --> <a class="left carousel-control" href="#sz-banner" role="button" data-slide="prev"> <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> <span class="sr-only">Previous</span> </a> <!--下一张--> <a class="right carousel-control" href="#sz-banner" role="button" data-slide="next"> <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> <span class="sr-only">Next</span> </a> </div>

6 栅格布局(一)

1.*container 响应式容器类
  • 定义一个固定宽度且有居中的版心

  • container 是具备响应式的能力

  • 宽度有四个档位 1170 970 750 100%

主要作用

  1. 在随时可能的宽度变化(响应式)中提供宽度限制。当页面宽度变化,container 的宽度也随之变化。并且其中的 column 的宽度是基于百分比,所以他们的值不需要变化。
  2. 提供一个水平方向的 padding,使其内部的内容不会接触到浏览器的边界,大小为 15px
1.原生 JS 实现 container 响应式布局原理-resize
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{ margin: 0; padding: 0; } .container{ height: 30px; background-color: red; margin: 0 auto; } </style> </head> <body> <div class="container"> </div> <!-- 四个档位 1170 970 750 100% --> <script> window.onload=function () { //1.拿到container标签 var container = document.querySelector('.container'); windowChange(); //2.监听窗口发生改变... window.addEventListener('resize',windowChange) function windowChange() { //3.拿到口的宽度 var windowWidth=window.innerWidth; //width + padding if(windowWidth>=1170){ container.style.width=1170+'px'; }else if(windowWidth>=970){ container.style.width=970+'px'; }else if(windowWidth>=750){ container.style.width=750+'px'; }else{ //... container.style.width='100%'; } } } </script> </body> </html>
2.媒体查询实现 container 响应式布局原理
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{ margin: 0; padding: 0; } .container{ height: 30px; background-color: red; margin: 0 auto; } /*... 750*/ @media (max-width: 750px){ .container{ width: 100%; } } @media (min-width: 750px) and (max-width: 970px){ .container{ width: 750px; } } @media (min-width: 970px) and (max-width: 1170px){ .container{ width: 970px; } } @media (min-width: 1170px) { .container{ width: 1170px; } } </style> </head> <body> <div class="container"> </div> <!-- 四个档位 1170 970 750 100% --> </body> </html>
2.row 类

row 类代表一行,一般都是与 container 类一起结合使用。

并且在栅格系统中,所有“列(column)必须放在 ” .row 内;

总结:

container 左右 padding 15px ; row 左右 margin 左右-15px , 为什么要这么折腾呢?

1.row 中嵌套的是 column, column 左右 padding 15px ;

2.在进行多层嵌套时,column 可以充当 container 容器,省了一层嵌套。

附加注意 : column 除了左右有 padding 15px 默认还有一个相对定位。

3.栅 shan 格系统

所有“列(column)必须放在 ” .row 内; 并且 .row 一般放在 .container

Bootstrap中的栅格系统就是将一行划分为12列 我们通过col-*-*的类名控制某个元素在某种屏幕的情况下展示几列 col-md-6 在中等屏幕下 占1/2 col-xs-12 在超小屏幕下 占全部
4.col-**-**类

在某种屏幕尺寸下控制列的占比

col-xs-[列数]:在超小屏幕下展示几份 col-sm-[列数]:在小屏幕下展示几份 col-md-[列数]:在中等屏幕下展示几份 col-lg-[列数]:在大屏幕下展示几份 __xs__ : 超小屏幕 手机 (<768px) __sm__ : 小屏幕 平板 (≥768px) __md__ : 中等屏幕 桌面显示器 (≥992px) __lg__ : 大屏幕 大桌面显示器 (≥1200px)

05.png

该布局代码:

<!--中间的栅栏布局--> <div id="main"> <div class="container-fluid"> <div class="row"> <div class="col-md-4">.col-md-4</div> <div class="col-md-4">.col-md-4</div> <div class="col-md-4">.col-md-4</div> </div> </div> </div>

7 栅格布局(二)

1.每一个 item 布局的代码:

<!--栅格布局--> <div id="main"> <div class="container-fluid"> <div class="row"> <div class="col-md-4 col-sm-6"> <img src="./img/cake1.jpg" alt=""> <h3>90蛋糕</h3> <button class="btn btn-success">立即购买</button> </div> <div class="col-md-4 col-sm-6"> <img src="./img/cake2.jpg" alt=""> <h3>樱桃芝士蛋糕</h3> <button class="btn btn-success">立即购买</button> </div> <div class="col-md-4 col-sm-6"> <img src="./img/cake3.jpg" alt=""> <h3>牛油果低脂蛋糕</h3> <button class="btn btn-success">立即购买</button> </div> </div> </div> </div>

8 栅格布局样式

body { padding-top: 50px; } #main { padding: 20px; } /*水平居中*/ #main .container-fluid .row .col-md-4 { text-align: center; } /*图片大小*/ #main .container-fluid .row .col-md-4 img { width: 180px; } #main .container-fluid .row .col-md-4 h3 { font-size: 15px; font-weight: bolder; }

9 标签添栅格布局

03.png

该布局的代码:

<!--底部的tabBar--> <div id="tabBar"> <!-- Nav tabs --> <!-- Tab panes --> <div class="tab-content"> <div role="tabpanel" class="tab-pane active" id="nine"> <div class="row"> <div class="col-md-8">.col-md-8</div> <div class="col-md-4">.col-md-4</div> </div> </div> <div role="tabpanel" class="tab-pane" id="Cherry"> <div class="row"> <div class="col-md-4">.col-md-4</div> <div class="col-md-8">.col-md-8</div> </div> </div> <div role="tabpanel" class="tab-pane" id="Avocado"> <div class="row"> <div class="col-md-8">.col-md-8</div> <div class="col-md-4">.col-md-4</div> </div> </div> </div> </div>

10 标签栅格布局的完善

该布局对应的代码:

<div id="tabBar"> <!-- 标签选项卡 --> <!-- data-toggle="tab" : 面板切换的方式。 (modal , tab , dropdown ,collapse..)--> <ul class="nav nav-tabs" role="tablist"> <li role="presentation" class="active"><a href="#nine" aria-controls="home" role="tab" data-toggle="tab">70蛋糕</a></li> <li role="presentation"><a href="#Cherry" aria-controls="profile" role="tab" data-toggle="tab">樱桃芝士蛋糕</a></li> <li role="presentation"><a href="#Avocado" aria-controls="messages" role="tab" data-toggle="tab">牛油果低脂蛋糕</a></li> </ul> <!-- 标签面板 --> <div class="tab-content"> <div role="tabpanel" class="tab-pane fade in active" id="nine"> <div class="row"> <div class="col-md-8"> <h2>回归|70蛋糕</h2> <p class="lead" >收起散落在路上的珍贵点滴,每个年代都有属于自己的童年记忆, 70的淡定、80的率性、90的不羁?? 思绪总是在不曾提起的故事里静静流淌,掠过往事,找寻简单的快乐。</p> </div> <div class="col-md-4"> <img class="img-responsive" src="./img/cake1.jpg" alt=""> </div> </div> </div> <div role="tabpanel" class="tab-pane fade" id="Cherry"> <div class="row"> <div class="col-md-4"> <img class="img-responsive" src="./img/cake2.jpg" alt=""> </div> <div class="col-md-8"> <h2>桃芝|樱桃芝士蛋糕</h2> <p class="lead">有种美好本在人生际遇之处, 那些初次的余香,俨如口中混合着的丝缕酸甜, 就像樱桃和百利甜一样,成了没人遗忘的天生一对。</p> </div> </div> </div> <div role="tabpanel" class="tab-pane fade" id="Avocado"> <div class="row"> <div class="col-md-8"> <h2>初心|牛油果低脂蛋糕</h2> <p class="lead">牛油果的清香弥漫在口腔,和着乳清奶酪咀嚼, 仿佛热带的阳光,洒满心房,也惊叹牛油果的神奇, 包容所有的味道,升华所有的味觉,伟大的感动,总在不言中。</p> </div> <div class="col-md-4"> <img class="img-responsive" src="./img/cake3.jpg" alt=""> </div> </div> </div> </div> </div>

11 标签栅格布局的样式

1.设计字体样式

/*图片距离顶部*/ #tabBar .tab-content .tab-pane .row .col-md-4 { margin-top: 50px; } /*字体距离顶部*/ #tabBar .tab-content .tab-pane .row .col-md-8 { margin-top: 100px; } /*h2 字体颜色*/ #tabBar .tab-content .tab-pane .row .col-md-8 h2{ color: red; }

2.自适应布局

/*自适应布局--> 其中screen and 可以省略*/ @media screen and (max-width: 650px) { /**字体距离顶部*/ #tabBar .tab-content .tab-pane .row .col-md-8 { margin-top: 40px; } }

12 响应式小工具

<div class="topbar hidden-xs hidden-sm"></div> // 或者 <div class="topbar visible-md visible-lg"></div>

hidden-xx : 在某种屏幕下隐藏( display : ‘none’ )

visible-xx-xxx : 在某种屏幕尺寸下显示

visible-md-xx:指的是中等屏幕可见,不是中等屏幕以上

visible-md-block visible-lg-block == hidden-sm hidden-xs

1. *探究-响应式工具 hidden

根据 hidden-xxx 的特点,我们可以通过媒体查询的方式探究探究:

<!-- .hidden-xs < 768 .hidden-sm [768, 992) .hidden-md [992, 1200) .hidden-lg >= 1200 --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .container{ width: 300px; height: 300px; background-color: red; margin: 20px auto; } //screen and 是可以省略的 @media screen and (max-width: 768px){ .hidden-xs{ display: none; } } @media screen and (min-width: 768px) and (max-width: 992px){ .hidden-sm{ display: none; } } @media screen and (min-width: 992px) and (max-width: 1200px){ .hidden-md{ display: none; } } @media screen and (min-width: 1200px){ .hidden-lg{ display: none; } } </style> </head> <!-- .hidden-xs < 768 .hidden-sm [768, 992) .hidden-md [992, 1200) .hidden-lg >= 1200 --> <body> <div class="container hidden-sm "> </div> </body> </html>
2 *探究-响应式工具 visible

2.根据 visible-xxx 的特点,我们可以通过媒体查询的方式探究探究:

<!-- .visible-xs-block .visible-xs-inline .visible-xs-inline-block --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .container{ width: 300px; height: 300px; background-color: red; margin: 20px auto; display: none; } @media screen and (max-width: 768px){ .visible-xs-block{ display: block; } .visible-xs-inline{ display: inline; } .visible-xs-inline-block{ display: inline-block; } } @media screen and (min-width: 768px) and (max-width: 992px){ .visible-sm-block{ display: block; } .visible-sm-inline{ display: inline; } .visible-sm-inline-block{ display: inline-block; } } @media screen and (min-width: 992px) and (max-width: 1200px){ .visible-md-block{ display: block; } .visible-md-inline{ display: inline; } .visible-md-inline-block{ display: inline-block; } } @media screen and (min-width: 1200px){ .visible-lg-block{ display: block; } .visible-lg-inline{ display: inline; } .visible-lg-inline-block{ display: inline-block; } } </style> </head> <!-- .visible-xs-block .visible-xs-inline .visible-xs-inline-block --> <body> <div class="container visible-xs-block"> </div> <p>我是p</p> </body> </html>
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 648 关注
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    246 引用 • 1338 回帖

相关帖子

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...