标签定义)。字母 td 指表格数据(table data),即数据单元格的内容。数据单元格可以包含文本、图片、列表、段落、表单、水平线、表格等等。
标签名
说明
table
表格整体包裹下面标签
tr
行
td
列
th
标题行
caption
大标题
thead
表格的头部
tbody
表格的主体
tfoot
表格的底部
合并单元格:
rowsoan和colspan 按照保留左上原则,先删除掉需要被合并的单元格,再在需要拉伸的单元格上加入属性并输入数字。不可以跨thead、tbody、tfoot合并
5、列表
列表在实际场景中常常用作于各种导航栏、菜单栏、卡片区等、因此是非常重要的,通常会使用无序列表包裹a标签等进行设计,无序列表浅的小圆点可以使用Css样式去掉。
列表名称
主体
成员结构
无序列表
ul
li
有序列表
ol
li
自定义列表
dl
dd、dt
6、语义化标签
之前有讲过一些语义化标签,这里主要是介绍一些在布局中常用的:
标签名
语义
header
网页的头部
footer
网页的底部
nav
网页的导航栏
asider
网页侧边栏
section
网页区块
article
网页文章
CSS基础
CSS简介
正如刚开始所讲,html作为网页的骨架是第一步所需要的了解的,当骨架搭建完毕势必要进行下一步过程,即使用CSS为当前骨架填血加肉,那么CSS是什么呢? CSS 指的是层叠样式表 ( C ascading S tyle S heets)。主要是为了解决内容与表现分离的问题,我们可以通过外部样式表从而大大的提高工作效率。
CSS的样式是非常强大的,可以对于我们所创建的HTML各个标签进行更改,甚至是可以将各种样式进行层叠展示,甚至可以在网页中做出特效、进行绘画。
CSS代码
首先我们需要知道如何引入CSS样式表及CSS的语法形式:CSS样式表有以下三种方式进行引入,即内嵌式 :cSS写在style标签中,style标签虽然可以写在页面任意位置,但是通常约定写在head标签中。外联式: 写在一个单独的.CSS文件当中,可以用link引入。 行内式: CSS写在style属性中。
那么该如何选择到html中的标签呢?这里就需要介绍到选择器了,CSS中的选择器有很多种,在不同的情况下使用不同的选择器 才能游刃有余的选择到需要的html标签。
16种常用选择器
选择器优先级: !important>行内元素>类选择器>id选择器>标签选择器>通配符选择器>继承
通配符选择器: 使用通配符 * 进行通用的选择,即选择网页内的所有元素通常会初始化浏览器的margin和padding值。 * { margin: 0; padding: 0;}
标签选择器: 选择所有的标签,可以与其他选择器配合使用。通常会选择某个类下的所有标签例如 . nav ul li a{ color:"red"}
类选择器: 这个是最常见的选择器,即在行内为某标签添加 class类名 ,就可以在css样式表内使用 .X 的方式选中。例如 . nav{ color:"red"}
id选择器: id选择器与类选择器方法类似,但在CSS中并不常见,同样是在行内加入 id名 后配合JS加特效。用 # X 的方式选中,例如 # nav{ color:"red"}
属性选择器: 想让带有某属性的标签使用选择器例如: a[title] { color: green;}
子代选择器: 仅将父代的子代选中,与后代选择不一样,注意区分 写法是 X>Y 例如 li>a {text-decoration: none;}
后代选择器: 可以将某标签的所有后代全部选中,包括子代的子代的标签。写法是 X Y 例如 li a {text-decoration: none;}
并集选择器: 并集与数学中的并集是一个意思,即将两者都选中。写法是 X,Y
交集选择器: 交集与数学中的交集是一个意思,即将两者相同部分选中。写法是 XY
相邻同胞选择器: 即相同父亲下的两个紧挨着的标签,例如p下的第一个li和第二个li 写法 X+Y
后续同胞选择器: 即相同父亲下所有的同胞的标签。例如p下的第一个li和剩下的所有li 写法 X~Y
链接选择器: 主要针对a链接的四种状态,a:visited、s:link、a:hover、a:active 的选择器 写法就是 a:hover{color:“red”}
a:visited {
color: green;
}
a:hover {
color: yellow;
}
a:active {
color: red;
}
a:link {
color: blue;
}
input:focus {
background-color: red;
}
伪元素选择器: 对于某标签的伪元素进行选择,即 a::before 或 a:after 等。
表单伪类选择器: 当某表单的元素收到了某种对应的匹配产生的选择。例如在input类型为text的文本框中进行点击,即点击后具有焦点。则可以这样选中 input:focus
input:disabled{
border:3px solid red;
}
input:enabled{
border:3px solid green;
}
input:required{
border:1px solid red;
}
input:optional{
border:1px solid green;
}
input:checked+label{
color: blue;
}
结构伪类选择器: 选择一堆结构相同的元素中的一个或几个。例如一个ul中有很多li标签,那么选中第一个元素即可这样表示。 ul:first-child 等如下图。
ul li:first-child{
color:red;
}
ul>li:first-of-type{
color:red;
}
/* 倒数的第3个 */
ul > li:nth-last-of-type(3) {
color: red;
}
/* 从第二个开始 */
ul li:nth-child(n+3){
color: red;
}
/* 倒数三个 :not 排除掉可连续写*/
ul li:nth-last-child(-n+3):not(:nth-last-child(2)){
color: red;
}
在我们能够引入CSS样式并且可以通过各种方式选择html标签后就可以正式开始学习代码啦!!!
1、浏览器兼容问题
在使用CSS样式时通常会在PC、移动端进行布局因此为了方便布局通常会引入flex、rem、vw等布局方式,对于新兴的一些布局方式或CSS3的新的样式,旧版浏览器是不具备兼容性的,这个问题体现在IE浏览器居多,部分企业要求兼容到最低IE8就可以了,但仍需考虑到IE6/IE7的兼容问题,这也是布局里 最为头疼的问题,我这里就举几个常见的案例
1、不同浏览器自带的margin和padding 在日常工作中公司一般会给base.css通用文件,其中就有消除margin和padd的代码即 *{margin:0;padding:0}
2、部分浏览器img图片之间有间距 img属性本身为行内元素是不会有间距的,但部分浏览器会有bug,因此会采用 浮动 floa t的方式解决。
3、在IE浏览器中的块级元素设置margin时在用到float时会遇到各种小bug 例如magin比原来设置的要大换行、双边距等 这时将 block转换成inline 是个不错的解决方式
4、ie6中,父级元素浮动以后,内部元素内容撑不开宽度 将子元素设置 浮动 即可
5、文字在各个浏览器高度不一样问题 这里的高度实际上是行高的区别,无论是哪款浏览器文字本身的高度和行高是有区别的,因此只需要统一 设置行高 即可。
font-size: 14px;
line-height: 14px;
这里归纳总结的实际上是一些常见的问题,实际开发过程中各种离奇的bug都会有只能具体问题具体分析了,其实大多数问题都已经用通用css样式表解决掉了,因此只需要遇到问题去查百度即可。
2、元素显示模式
元素显示有三种形式 即块级元素、行内元素、行内块元素,三者可以通过display进行互相转换
块级元素(block)特性:
总是独占一行,表现为另起一行开始,而且其后的元素也必须另起一行显示;
宽度(width)、高度(height)、内边距(padding)和外边距(margin)都可控制;
通常会使用浮动使块级元素在一行排列
内联元素(inline)特性:
和相邻的内联元素在同一行;
宽度(width)、高度(height)、内边距的top/bottom(padding-top/padding-bottom)和外边距的top/bottom(margin-top/margin-bottom)都不可改变,就是里面文字或图片的大小;
块级元素主要有:
address , blockquote , center , dir , div , dl , fieldset , form , h1 , h2 , h3 , h4 , h5 , h6 , hr , isindex , menu , noframes , noscript , ol , p , pre , table , ul , li
内联元素主要有:
a , abbr , acronym , b , bdo , big , br , cite , code , dfn , em , font , i , img , input , kbd , label , q , s , samp , select , small , span , strike , strong , sub , sup ,textarea , tt , u , var
可变元素(根据上下文关系确定该元素是块元素还是内联元素):
applet ,button ,del ,iframe , ins ,map ,object , script
CSS中块级、内联元素的应用:
利用CSS我们可以摆脱上面表格里HTML标签归类的限制,自由地在不同标签/元素上应用我们需要的属性。
主要用的CSS样式有以下三个:
display:block -- 显示为块级元素
display:inline -- 显示为内联元素
display:inline-block -- 显示为内联块元素,表现为同行显示并可修改宽高内外边距等属性但多个内联快在一起回车或空格时会产生空格
3、常见单位
在CSS中有绝对长度和相对长度的区别,绝对长度即固定的不论是任何显示屏显示都是这个长度,但相对长度是把参照物看做是显示屏或浏览器,相对于他们的长度。绝对长度最常用的就是px即像素,还有deg角度等。下面主要是相对长度在浏览器的响应式布局等有很大作用
单位
相对长度 描述
em
它是描述相对于应用在当前元素的字体尺寸,所以它也是相对长度单位。一般浏览器字体大小默认为16px,则2em == 32px;
rem
rem 是根 em(root em)的缩写,rem作用于非根元素时,相对于根元素字体大小;rem作用于根元素字体大小时,相对于其出初始字体大小。例如375宽的移动端 1rem=37.5
vw
viewpoint width,视窗宽度,1vw=视窗宽度的1% 例如375宽的移动端 1vw=3.75
vh
viewpoint height,视窗高度,1vh=视窗高度的1% 例如667高度的移动端 1vh=6.67
4、颜色
CSS中的颜色有三种写法,一种是直接写 英文 单词例如black,red等,一种是直接写对应的 RGB或RGBA, rgb指的是红色,绿色,蓝色三原色,a是alpha即透明度 , 但实际开发中常常采用第三种也就是 16进制 的写法。因为可以在切图软件中吸取16进制颜色比较精准。
16进制的颜色可以是最低值是0(十六进制00)到最高值是255(十六进制FF)3个双位数字的十六进制值写法,以#符号开始。
5、字体和文本
字体及其样式
字体样式
说明
属性
font—size
字体大小
单位px 谷歌默认16px
font—weight
字体粗细
400~700 正常 normal 粗体 bold
font—style
字体样式
默认值 normal 斜体 Italy
font—family
字体类型
无衬线字体 sans-serif 衬线字体 serif 等宽字体 monospace
font连写格式 size->weight->style->family
这里在别人的博客上找到一张图这里很好的说明 了height和line-hheight的区别 及vertical-align的位置区别,vertical-align 有以下几种属性即 basealine,middle,text-top,text-bottom等,实际上文字的对齐方式是按照这几种方式进行对齐的。
以下是字体衬线和无衬线及等宽的区别
文本及其样式
属性
说明
属性值
color
字体颜色
无
diection
文本方向
ltr 左到右
rtl 右到左
inherit 继承父元素
letter-spacing
字符间距
normal 正常值
length 定义值
inherit 继承父元素
line-height
设置行高
等于父元素时 居中效果
等于 1时取消上下边距即等于字体高度
text-align
对齐文本
text-decoration
文本修饰
none 默认无
underline 下划线
overline 上划线
line-through 文本中间一条
text-indent
文本缩进
无
text-shadow
文本阴影
h-shadow 水平距离
v-shadow 垂直距离
blur 模糊度
color 颜色
vertical-align
垂直对齐
top 上
center 中
bottom 下
word-spacing
文字间距
无
多行文字省略号案例
字体安装:
vscode的字体安装:
首先需要获取字体这里推荐:JetBrains Mono 搭配连写 设置 非常舒服
比较常用的字体有:
'JetBrains Mono','Fira Code',Menlo,Monaco, 'Courier New', monospace
下载好字体后 现在电脑本地安装,如下步骤
首先在电脑c盘搜索 fonts 文件夹 或默认在 C:\Windows\fonts 然后将文件夹 为tff/oft 内的文件直接复制进去即可。这样本地字体就安装成功了 接下来就是vscode中设置,
在文件/首选项/设置中进行设置 (或ctrl+,)需要设置的地方有两个 一个是 family即字体类型把我们刚才设置的字体放在第一位。
如果需要设置连写还需要进入到 setting.json中设置
"editor.fontLigatures": true,
最后一步!!! 重启电脑 只重启vs 是没有变化的. 也可以以下列方式简单设置:
在vscode配置中搜索Editor: Font Family
并设置以下值。
'JetBrains Mono','Fira Code',Menlo,Monaco, 'Courier New', monospace
需要在配置中将连字打开(设置中搜索fontLigatures
关键词)
"editor.fontFamily": "'Fira Code','JetBrains Mono'",
"editor.fontLigatures": true,
webstorm设置
这个比较简单 在电脑安装好字体后可以直接去设置->编辑器->字体 就可以直接修改字体与连写
@font-face
上面的字体设置是更改本地即vscode的字体样式如果需要改变浏览器显示的字体需要使用 font-family属性,但如果客户的电脑没有这个字体就会显示其他字体。此时我们便可以使用@font-family 来设置字体这种方式即便用户没有字体也可以显示,实际上就是调用了我们提供的字体。
如下图所示这是正常的字体显示结果
如下是使用了我们定义的字体
@font-face {
font-family:"codelee";
src: url(./font/CascadiaCode-Light.otf) format('OpenType');
}
h2{
font-size: 50px;
font-family:codelee;
}
这里我们首先定义 @font-face 里的内容 再用 font-family 使用该字体。
font-family
这个属性的值为自定义的名字 后面要通过这个名字来使用它
src
src顾名思义就是输入字体的地址
format
这个值比较重要,是代表了该字体的格式通常有如下几种 注意format里填入的是 前面大写的内容,括号里的为前面url对应的后缀。format里的内容必须用 引号 括起来,忽略大小写
1)TureTpe(.ttf)格式:
.ttf字体是Windows和Mac的最常见的字体,是一种RAW格式,因此他不为网站优化,支持这种字体的浏览器有【IE9+,Firefox3.5+,Chrome4+,Safari3+,Opera10+,iOS Mobile Safari4.2+】;
2)OpenType(.otf)格式:
.otf字体被认为是一种原始的字体格式,其内置在TureType的基础上,所以也提供了更多的功能,支持这种字体的浏览器有【Firefox3.5+,Chrome4.0+,Safari3.1+,Opera10.0+,iOS Mobile Safari4.2+】;
3)Web Open Font Format(.woff)格式:
.woff字体是Web字体中最佳格式,他是一个开放的TrueType/OpenType的压缩版本,同时也支持元数据包的分离,支持这种字体的浏览器有【IE9+,Firefox3.5+,Chrome6+,Safari3.6+,Opera11.1+】;
4)Embedded Open Type(.eot)格式:
.eot字体是IE专用字体,可以从TrueType创建此格式字体,支持这种字体的浏览器有【IE4+】;
5)SVG(.svg)格式:
.svg字体是基于SVG字体渲染的一种格式,支持这种字体的浏览器有【Chrome4+,Safari3.1+,Opera10.0+,iOS Mobile Safari3.2+】。
兼容性: 有的浏览器如ie 会不兼容因此通常会将多种格式一起写出来如下所示
@font-face {
font-family: 'NeuesBauenDemo';
src: url('../fonts/neues_bauen_demo-webfont.eot'); /*ie9+*/
src: url('../fonts/neues_bauen_demo-webfont.eot?#iefix') format('embedded-opentype'), /*ie6-ie8*/
url('../fonts/neues_bauen_demo-webfont.woff') format('woff'), /* chrome firefox*/
url('../fonts/neues_bauen_demo-webfont.ttf') format('truetype'), /* chrome firefox opera safari android ios 4.2+ */
url('../fonts/neues_bauen_demo-webfont.svg#NeuesBauenDemo') format('svg'); /* ios 4.1- */
font-weight: normal;
font-style: normal;
转载自 CSS3 @font-face_@font-face, 会员专栏 教程_W3cplus
6、背景
css中的背景可以由颜色、图片、渐变的形式体现,用处非常广泛包括body,导航,按钮等都需要用到 backgorund 。
属性
说明
属性值
backgrond—color
背景颜色
transparent 透明
backgrond—image
背景图片
url 图片地址
liner-gredient 渐变
backgrond—position
相对位置
x% y%
xpx ypx
backround—reapeat
是否重复
repeat 重复
no-repeat 不重复
repeat-x x轴重复
repeat-y y轴重复
background-size
背景图像大小
contain; 缩小图片来适应元素的尺寸(保持像素的长宽比); cover; 扩展图片来填满元素(保持像素的长宽比); 100px 100px; 调整图片到指定大小; 50% 100%; 调整图片到指定大小,百分比相对于包含元素的尺寸。
颜色、图片和渐变写法
div{
width: 100px;
height:100px;
/* 演示效果 只能用一个效果 */
background-image:url(./image.jpg);
background-color: red;
background: linear-gradient(35deg,red,green 20px,yellow);
}
简便写法
div{
width: 100px;
height:100px;
/* 背景图片 */
background:url(./image.jpg) no-repeat;
/* 精灵图常用 */
background:url(./image.jpg) -20px -30px;
}
实例:给网页添加背景图片
7、盒模型
所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。
盒模型分IE盒模型和标准盒模型
ie盒模型元素宽度width=marrgin+padding+content
标准盒模型元素宽度width=content
Margin(外边距) - 清除边框外的区域,外边距是透明的。
Border(边框) - 围绕在内边距和内容外的边框。
Padding(内边距) - 清除内容周围的区域,内边距是透明的。
Content(内容) - 盒子的内容,显示文本和图像。
总元素的宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距
关于盒模型的一些代码:
div{
height: 50px;
width: 100%;
background-color:gainsboro;
padding: 20px;
margin: 10px;
border: 1px solid black;
}
盒模型引起的问题:
1、正常状况,即两个盒子 水平布局 的间距就是两个盒子的margin的和的值
2、合并状况,即两个块级元素盒子垂直布局 上下margin-top会合并,间距为二者的最大值,解决办法是避免,只使用一个margin。
3、塌陷状况,互相嵌套 的块级元素,子元素的margin-top会作用在父元素上,导致父元素向下移动,解决办法有以下几种;
1.给父元素设置border-top或者padding-top (分隔父子元素的margin-top) 2.给父元素设置overflow: hidden 3.转换成行内块元素 4.设置浮动
內减问题: 由于增加padding导致盒模型和设置的尺寸不一样,一个办法是手动內减,即将尺寸改成正常值,二是使用 box-sizing:border-box;
8、三大特性
继承性
继承性是CSS三大特性之一,字面理解意思就是子元素能够继承父元素的特性,例如给ul设置list-style为none 那么li前方的小圆点就会消失,或div套div 给外部的div设置color属性,则子元素也会有color属性。在css里面 text-、font-、line- 开头的属性都是可以继承的。具有继承属性的标签在浏览器检查时会显示出来。
特例:a标签不能继承颜色 h标签不能继承字体大小 div标签不能继承高度,但反过来子div的高度可以撑大父元素。
层叠性
指多种CSS样式的叠加。是浏览器处理冲突的一个能力,如果一个属性通过两个相同选择器设置到同一个元素上,那么这个时候一个属性就会将另一个属性层叠掉。 原则:1、样式冲突,遵循的原则是就近原则,即CSS的书写位置。
2、样式不冲突,不会层叠
优先级
优先级之前在将选择器时有提到过即:
!important>行内元素>类选择器>id选择器>标签选择器>通配符选择器>继承
注意点: 1. !important写在属性值的后面,分号的前面! 2. !important不能提升继承的优先级,只要是继承优先级最低!3.实际开发中不建议使用!important
优先级权重计算:
权重 !important>行内 1000>id 100> class 10> 标签 1 >通配符 0 >继承
可以通过相加计算出权重值:如下所示 body为标签权重 1 .first 为类选择 即权重为10
body>.first{ 11
color: red;
}
.first{ 10
color: green;
}
9、浮动和清除浮动
CSS 的 Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列。Float(浮动),往往是用于图像,但它在布局时一样非常有用。早期用于图文环绕,现在用户布局。
属性
说明
left
元素向左浮动。
right
元素向右浮动。
none
默认值。元素不浮动,并会显示在其在文本中出现的位置。
浮动的特点
1. 浮动元素会脱离标准流(简称:脱标 ),在标准流中不占位置 相当于从地面飘到了空中 2.浮动元素比标准流高半个级别,可以覆盖标准流中的元素 3. 浮动找浮动,下一个浮动元素会在上一个浮动元素后面左右浮动 4.浮动元素会受到上面元素边界的影响 5.浮动元素有特殊的显示效果 .一行可以显示多个 ·可以设置宽高
浮动导致的问题:
1、子元素浮动导致父元素脱标,此时可以给父元素增加高度或增加浮动或使用box-sizing:border-box
清除浮动
含义 : 清除浮动带来的影响 影响:如果子元素浮动了,此时子元素不能撑开标准流的块级父元素原因: 子元素浮动后脱标→不占位置目的:需要父元素有高度,从而不影响其他网页元素的布局
1、直接给父元素设置高度
特点: ·优点:简单粗暴,方便 ·缺点:有些布局中不能固定父元素高度。如:新闻列表、京东推荐模块
2、额外标签法
操作: 1.在父元素内容的最后添加一个块级元素 2.给添加的块级元素设置clear:both 特点: 缺点:会在页面中添加额外的标签,会让页面的HTML结构变得复杂
3、单伪元素清除法
使用伪元素代替标签 优点:项目中使用,直接给标签加类即可清除浮动
.clearfix:after{
content: "";
display: block;
height: 0;
clear:both;
visibility: hidden;
}
4、双伪元素清除法
优点:项目中使用,直接给标签加类即可清除浮动
.clearfix:after,.clearfix:before{
content: "";
display: table;
}
.clearfix:after{
clear: both;
}
5、直接设置overflow:hidden
6、BFC盒子 BFC:块格式化上下文(Block Formatting Context) 是Web页面的可视CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。
创建BFC方法: 1. html标签是BFC盒子 2.浮动元素是BFC盒子 3.行内块元素是BFC盒子 4. overflow属性取值不为visible。如: auto、hidden. BFC盒子常见特点: 1.BFC盒子会默认包裹住内部子元素(标准流、浮动)→应用:清除浮动 2. BFC盒子本身与子元素之间不存在margin的塌陷现象→应用:解决margin的塌陷3.
10、定位
1.标准流 1.块级元素独占一行→垂直布局 2.行内元素/行内块元素一行显示多个→水平布局 2.浮动 float 1.可以让原本垂直布局的块级元素变成水平布局 3.定位 position 1.可以让元素自由的摆放在网页的任意位置 2.—般用于盒子之间的层叠情况
定位方式
属性值
静态定位
static
相对定位
absolute
绝对定位
relative
固定定位
fixed
静态定位: 默认值 相对定位: 相对于自己原来的位置的定位 未脱标 绝对定位: 相对于父级的位置 完全脱标 固定定位: 固定在某一位置,完全脱标
子绝父相
子元素使用绝对定位,父元素使用相对定位常用于字体图标等地方。
.father{
position: relative;
}
.son{
position: absolute;
top:20px;
left:20px;
}
字节父相案例:水平居中 1.子绝父相 2.先让子盒子往右移动父盒子的一半 .left: 50% 3.再让子盒子往左移动自己的一半 普通做法: margin-left:负的子盒子宽度的一半 缺点: 子盒子宽度变化后需要重新改代码 优化做法: transform: translateX(-5g%)
.father{
width: 100px;
height: 100px;
position: relative;
}
.son{
width: 30px;
height: 30px;
position: absolute;
top:0px;
left:50%;
transform: translateX(-15px);
}
元素层级问题
不同布局方式元素的层级关系: 标准流<浮动<定位 不同定位之间的层级关系: 相对、绝对、固定默认层级相同 此时HTML中写在下面的元素层级更高,会覆盖上面的元素,可以使用z-index 来调节层级
11、装饰
1.vertical-align 属性设置元素的垂直对齐方式。该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。允许指定负长度值和百分比值。这会使元素降低而不是升高。在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。
值
描述
baseline
默认。元素放置在父元素的基线上。
sub
垂直对齐文本的下标。
super
垂直对齐文本的上标
top
把元素的顶端与行中最高元素的顶端对齐
text-top
把元素的顶端与父元素字体的顶端对齐
middle
把此元素放置在父元素的中部。
bottom
使元素及其后代元素的底部与整行的底部对齐。
text-bottom
把元素的底端与父元素字体的底端对齐。
如下图所示,baseline为默认样式位于基线位置若想要让文本底与基线对齐可以使用text-bottom属性,该属性除在文字对齐方面有效果,同时对于以下几种情况也同样有效。
1.文本框和表单按钮无法对齐问题 2. input和img无法对齐问题 3. div中的文本框,文本框无法贴顶问题 4. div不设高度由img标签撑开,此时img标签下面会存在额外间隙问题 5.使用line-height让img标签垂直居中问题
2.鼠标光标样式 cursor
值
描述
default
默认光标(通常是一个箭头)
auto
默认。浏览器设置的光标。
crosshair
光标呈现为十字线。
pointer
光标呈现为指示链接的指针(一只手)
move
此光标指示某对象可被移动。
3.边框圆角 border-radius
单位可以是px也可以是%,每个半径的四个值的顺序是:左上角,右上角,右下角,左下角。如果省略左下角,右上角是相同的。如果省略右下角,左上角是相同的。如果省略右上角,左上角是相同的。
.father{
width: 100px;
height: 100px;
background-color: violet;
border-radius: 50%;
}
4、溢出部分显示效果overflow
溢出部分:指的是盒子内容部分所超出盒子范围的区域 场景:控制内容溢出部分的显示效果,如:显示、隐藏、滚动条...... 属性名: overflow
visible
默认值。内容不会被修剪,会呈现在元素框之外。
hidden
内容会被修剪,并且其余内容是不可见的。
scroll
内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
auto
如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
使元素隐藏 的方式有三种: 1、如上的overflow:hidden 可以使元素本身隐藏,并且 占位置 2、display:none 也是隐藏元素本身,但 不占位置 3、可以使用 opcity 是元素变透明
value
指定不透明度。从0.0(完全透明)到1.0(完全不透明)
inherit
Opacity属性的值应该从父元素继承
5、边框合并 border-collapse:collapese; 6、文本阴影 text-shadow
h-shadow
必需。水平阴影的位置。允许负值。
v-shadow
必需。垂直阴影的位置。允许负值。
blur
可选。模糊的距离。
color
可选。阴影的颜色。
7、盒子阴影 box-shadow
值
说明
h-shadow
必需的。水平阴影的位置。允许负值
v-shadow
必需的。垂直阴影的位置。允许负值
blur
可选。模糊距离
spread
可选。阴影的大小
color
可选。阴影的颜色
inset
可选。从外层的阴影(开始时)改变阴影内侧阴影
12、平面空间转换
Transform属性应用于元素的2D或3D转换。这个属性允许你将元素旋转,缩放,移动,倾斜等。
通过transform-origin可以改变原点
ranslate(x ,y )
定义 2D 转换。
translate3d(x ,y ,z )
定义 3D 转换。
translateX(x )
定义转换,只是用 X 轴的值。
translateY(y )
定义转换,只是用 Y 轴的值。
translateZ(z )
定义 3D 转换,只是用 Z 轴的值。
scale(x [,y ]?)
定义 2D 缩放转换。
scale3d(x ,y ,z )
定义 3D 缩放转换。
scaleX(x )
通过设置 X 轴的值来定义缩放转换。
scaleY(y )
通过设置 Y 轴的值来定义缩放转换。
scaleZ(z )
通过设置 Z 轴的值来定义 3D 缩放转换。
rotate(angle )
定义 2D 旋转,在参数中规定角度。
rotate3d(x ,y ,z ,angle )
定义 3D 旋转。
rotateX(angle )
定义沿着 X 轴的 3D 旋转。
rotateY(angle )
定义沿着 Y 轴的 3D 旋转。
rotateZ(angle )
定义沿着 Z 轴的 3D 旋转。
skew(x-angle ,y-angle )
定义沿着 X 和 Y 轴的 2D 倾斜转换。
skewX(angle )
定义沿着 X 轴的 2D 倾斜转换。
skewY(angle )
定义沿着 Y 轴的 2D 倾斜转换。
perspective(n )
为 3D 转换元素定义透视视图。
思考︰使用perspective透视属性能否呈现立体图形? 答∶不能,perspective只增加近大远小、近实远虚的视觉效果。
13、动画
使用动画步骤:①使用 @keyframes 定义 动画 ② 使用 animation 使用动画
代码如下
/* 一 定义动画:200 到 500*300 到 800*500 */
/* 百分比指的是动画总时长的占比 */
@keyframes change {
0% {
width: 200px;
}
50% {
width: 500px;
height: 300px;
}
100% {
width: 800px;
height: 500px;
}
}
.box {
width: 200px;
height: 100px;
background-color: pink;
/* 二 使用动画 */
animation: change 1s;
}
若想要控制动画 那就需要在animation上进行设置。animation对应的属性如下: animation: 动画名称、动画时长、速度曲线、延迟时间、重复次数、动画方向、执行完毕时状态;
以上的各种参数动画名称,时长,延迟时间是见名知意的没有多余的参数,主要研究一下几个参数。
1、速度曲线:animation-timing-function
linear
动画从头到尾的速度是相同的。
ease
默认。动画以低速开始,然后加快,在结束前变慢。
ease-in
动画以低速开始。
ease-out
动画以低速结束。
ease-in-out
动画以低速开始和结束。
steps(int,start|end)
指定了时间函数中的间隔数量(步长)。有两个参数,第一个参数指定函数的间隔数,该参数是一个正整数(大于 0)。 第二个参数是可选的,表示动画是从时间段的开头连续还是末尾连续。含义分别如下:
start:表示直接开始。
end:默认值,表示戛然而止。
逐帧动画做法: 需要有一个逐帧图如下图所示。然后计算图中有多少重复的元素,将个数填入steps();
2、重复次数animation-iteration-count
n
一个数字,定义应该播放多少次动画
infinite
指定动画应该播放无限次(永远)
3、动画方向animation-direction
normal
默认值。动画按正常播放。
reverse
动画反向播放。
alternate
动画在奇数次(1、3、5...)正向播放,在偶数次(2、4、6...)反向播放。
alternate-reverse
动画在奇数次(1、3、5...)反向播放,在偶数次(2、4、6...)正向播放。
4、执行完毕时状态animation-fill-mode
值
描述
none
默认值。动画在动画执行之前和之后不会应用任何样式到目标元素。
forwards
在动画结束后(由 animation-iteration-count 决定),动画将应用该属性值。
backwards
动画将应用在 animation-delay 定义期间启动动画的第一次迭代的关键帧中定义的属性值。这些都是 from 关键帧中的值(当 animation-direction 为 "normal" 或 "alternate" 时)或 to 关键帧中的值(当 animation-direction 为 "reverse" 或 "alternate-reverse" 时)。
both
动画遵循 forwards 和 backwards 的规则。也就是说,动画会在两个方向上扩展动画属性。
移动端
在日新月异发展的今天移动端的使用情况已经远远超过了PC端,因此我们的技术也应该更新迭代,找到针对于移动端的布局模式。据观察发现PC端的网页常常会有版心两侧空白的情况,但移动端基本不会有,都是紧贴着移动端两侧。并且每种类型移动端类型不一样,大小就会有很大的差别,例如ipad和ihone6,因此就要有适合每个移动端的可以自适应的弹性布局 ,
flex布局
物理分辨率 是生产屏幕时就固定的,它是不可被改变的 逻辑分辨率 是由软件(驱动)决定的 因为有两种分辨率因此,在做编程时就要考虑选择哪种分辨率合适,事实上现在大多采用的是逻辑分辨率。我们在拿到设计师效果图时应该使用二倍图来观看。
Flex 是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。在容器中有两条轴,一条是主轴 一条是交叉轴又叫侧轴。
当使用了flex布局时,子元素的float、clear和vertical-align 属性将失效。 flex声明方式:在父元素中使用 disply:flex即可
//普通盒子
.box{
display: flex;
}
//行内元素
.box{
display: inline-flex;
}
//webkit内核浏览器
.box{
display: -webkit-flex;
display: flex;
}
采用Flex布局的元素,称为Flex容器(flex container),简称”容器”。它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称”项目”。
容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。
容器的属性
flex-direction //决定主轴的方向(即项目的排列方向)。
flex-wrap //如果一条轴线排不下,如何换行。
justify-content //项目在主轴上的对齐方式。
align-items //交叉轴上如何对齐。
align-content //align-content属性定义了多根轴线的对齐方式。
1、flex-direction
可以更改主轴的方向,之前默认是横向的,可以改成纵向的经常和justify-content 等一起使用将容器内的元素居中对齐,这里最常用的就是将横向的改为纵向的即 flex-direction : column;
值
说明
row(默认值)
主轴为水平方向,起点在左端。
row-reverse
主轴为水平方向,起点在右端。
column
主轴为垂直方向,起点在上沿。
column-reverse
主轴为垂直方向,起点在下沿。
如下图的红框内的元素就需要居中对齐,此时应先将主轴方向改变,再将三者进行对齐排列,再将整体居中,但注意此时的轴向已经变了。
2、flex-wrap
默认情况下,项目都排在一条线(又称”轴线”)上。flex-wrap属性定义,如果一条轴线排不下,如何换行。在弹性布局内,即便是空间不够,也会在一行排列这时候各子元素的宽度就会被压缩。如果想让他门换行排列就需要使用这个属性、
值
说明
nowrap(默认)
不换行
wrap
换行,第一行在上方
wrap-reverse
wrap-reverse:换行,第一行在下方
3、justify-content
justify-content属性定义了项目在主轴上的对齐方式。
值
说明
flex-start
左对齐
flex-end
右对齐
center
居中对齐
space-between
两端对齐
space-around
每个项目两侧的间隔相等,项目之间的间隔比项目与边框的间隔大一倍。
space-evenly
每个项目间距相等
4、align-items
align-items属性定义项目在交叉轴上如何对齐
值
说明
flex-start
交叉轴的起点对齐
flex-end
交叉轴的终点对齐
center
交叉轴的中点对齐
baseline
项目的第一行文字的基线对齐
stretch(默认值
如果项目未设置高度或设为auto,将占满整个容器的高度。
5、align-content
align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
值
说明
flex-start
与交叉轴的起点对齐。
flex-end
与交叉轴的终点对齐。
center
与交叉轴的中点对齐。
space-between
与交叉轴两端对齐,轴线之间的间隔平均分布。
space-around
每个项目两侧的间隔相等,项目之间的间隔比项目与边框的间隔大一倍。
stretch(默认值)
轴线占满整个交叉轴。
移动适配
rem、vw/vh
虽然在弹性布局上已经有了flex的解决办法。但对于具体的属性值例如说宽高等还是需要更细节的办法解决,于是便引出了移动适配的思路。虽然听着移动适配很高大上,实际上就是把PC端的px单位换成了rem等,这个rem就可以解决掉在不同的移动端尺寸的自适应。
目前rem布局方案中,将网页等分成10份,HTML标签的字号为视口宽度的1/10,这里就需要用到媒体查询的方式进行转化。但不同的移动端的html基本字号也不相同,因此可以引进 flexble.js 这是手淘开发的一个用来适配移动端的js框架,以后只需要引入它便可以直接使用rem的适配方式、
对于网页宽度为375px的网页来说,它的HTML标签的字号就是37.5,我们再用需要的宽度除以这个数便可以得到rem的对应尺寸。写法如下
.father{
width: (100/37.5)rem;
height:(100/37.5)rem;
background-color: violet;
}
以此类推,vw和vh也是类似的原理,只是它们是把网页等分成100份,但vw和vh是不需要引入js的。vw指的是相对于网页宽度的1/100,vh是高度的1/100,二者不能混合使用,
.father{
width: (100/3.75)vw;
height:(100/3.75)vw;
background-color: violet;
}
less语法
less作为一门CSS扩展语言,也就是说CSS预处理器。(Leaner Style Sheets)简称less,它只不过是为css新增这些的功能,比如说:变量、函数、作用域等等。它的优点是:更具有维护性、扩展性等,可以降低了维护的成本,根据按这样的话,那么less可以让我们写更少的代码做更多的事情。
注释
less的注释语法类似c语言等编程软件可以使用 // 快捷方式是 ctrl +/ 当然对于多行也可以采用 /* 注释内容*/ 的方式快捷键是 : shift + alt + A
// 首部区域
header {
/* width: 100%;
background: #fff; }*/
加减乘除运算 在css中是不可以使用加减乘除作为值传递的,然而less是可以使用的,因此才可以用移动适配的方式
自动生成后代选择器
定义部分属性变量
如图所示可以定义一个变量记录3.75vw,使用时只需要用这个变量即可格式为:
导入、导出生成css文件
当书写完less文件后,可以保存那么在当前文件夹会立马生成一个.css的文件,如果想将它导入到指定文件夹有两种方式一个是使用EasyLess插件 另一个是使用 //out 的方式 ,必须写在第一行 可以导出就可以导入,导入的方式如下图所示 语法是 @important ‘ ’ ; 如下图所示
另外还有禁止导出
bootstrap框架
Bootstrap,来自 Twitter,是目前最受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷。同时,Bootstrap 还是最受欢迎的 HTML、CSS 和 JS 框架,用于开发响应式布局、移动设备优先的 WEB 项目。作为一个框架,它和jQuery EasyUI、WeUI一样,助力于前端开发。简而言之,使用Bootstrap让前端开发变得简洁高效。
bootstrap 中文官方网址为: 起步 · Bootstrap v3 中文文档 | Bootstrap 中文网 。
如下图所示会有两个下载按钮,第一个是我们所用的,第二个是源码,如需要进行学习可以下载第二个。
如下图所示有css,js和fonts三个文件夹,css和js就是我们所需要引入的文件位置,fonts所存的是需要进入的字体图标
在引入时需要选择这两个文件引入,也可以引入不带 min 的文件,二者的区别是带min的是压缩过的,会使浏览器运行速度更快。
注意:这里引入js文件之前必须 引入 Jquery文件!!! 接下里就可以开始使用了
使用步骤
bootstrap栅格系统: bootstrap自动将网页划分成 12份 在做响应式布局时可以根据栅格系统进行编程,即当网页宽度小于768px时该元素站的份数,如下图所示
例如:当网页宽度小于768时一行要排列1个div。大于768px小于992px 要排2个,大于992小于1200也是2个,大于1200要排4个 那么代码就如下写法;
bootstrap先介绍到这里 只是简单的介绍下。基础篇到这里基本就完结了。非常感谢大家的观看,希望能够给个点赞关注....
你可能感兴趣的:(前端,css3,html5)
Long类型前后端数据不一致
igotyback
前端
响应给前端的数据浏览器控制台中response中看到的Long类型的数据是正常的到前端数据不一致前后端数据类型不匹配是一个常见问题,尤其是当后端使用Java的Long类型(64位)与前端JavaScript的Number类型(最大安全整数为2^53-1,即16位)进行数据交互时,很容易出现精度丢失的问题。这是因为JavaScript中的Number类型无法安全地表示超过16位的整数。为了解决这个问
DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理
STU学生网页设计
网页设计 期末网页作业 html静态网页 html5期末大作业 网页设计 web大作业
️精彩专栏推荐作者主页:【进入主页—获取更多源码】web前端期末大作业:【HTML5网页期末作业(1000套)】程序员有趣的告白方式:【HTML七夕情人节表白网页制作(110套)】文章目录二、网站介绍三、网站效果▶️1.视频演示2.图片演示四、网站代码HTML结构代码CSS样式代码五、更多源码二、网站介绍网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程
【加密社】Solidity 中的事件机制及其应用
加密社
闲侃 区块链 智能合约 区块链
加密社引言在Solidity合约开发过程中,事件(Events)是一种非常重要的机制。它们不仅能够让开发者记录智能合约的重要状态变更,还能够让外部系统(如前端应用)监听这些状态的变化。本文将详细介绍Solidity中的事件机制以及如何利用不同的手段来触发、监听和获取这些事件。事件存储的地方当我们在Solidity合约中使用emit关键字触发事件时,该事件会被记录在区块链的交易收据中。具体而言,事件
关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript
二挡起步
web前端期末大作业 javascript html css 旅游 风景
⛵源码获取文末联系✈Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业|游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作|HTML期末大学生网页设计作业,Web大学生网页HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScrip
HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动
二挡起步
web前端期末大作业 web设计网页规划与设计 html css javascript dreamweaver 前端
Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作HTML期末大学生网页设计作业HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScript:做与用户的交互行为文章目录前端学习路线
springboot+vue项目实战一-创建SpringBoot简单项目
苹果酱0567
面试题汇总与解析 spring boot 后端 java 中间件 开发语言
这段时间抽空给女朋友搭建一个个人博客,想着记录一下建站的过程,就当做笔记吧。虽然复制zjblog只要一个小时就可以搞定一个网站,或者用cms系统,三四个小时就可以做出一个前后台都有的网站,而且想做成啥样也都行。但是就是要从新做,自己做的意义不一样,更何况,俺就是专门干这个的,嘿嘿嘿要做一个网站,而且从零开始,首先呢就是技术选型了,经过一番思量决定选择-SpringBoot做后端,前端使用Vue做一
博客网站制作教程
2401_85194651
java maven
首先就是技术框架:后端:Java+SpringBoot数据库:MySQL前端:Vue.js数据库连接:JPA(JavaPersistenceAPI)1.项目结构blog-app/├──backend/│├──src/main/java/com/example/blogapp/││├──BlogApplication.java││├──config/│││└──DatabaseConfig.java
最简单将静态网页挂载到服务器上(不用nginx)
全能全知者
服务器 nginx 运维 前端 html 笔记
最简单将静态网页挂载到服务器上(不用nginx)如果随便弄个静态网页挂在服务器都要用nignx就太麻烦了,所以直接使用Apache来搭建一些简单前端静态网页会相对方便很多检查Web服务器服务状态:sudosystemctlstatushttpd#ApacheWeb服务器如果发现没有安装web服务器:安装Apache:sudoyuminstallhttpd启动Apache:sudosystemctl
补充元象二面
Redstone Monstrosity
前端 面试
1.请尽可能详细地说明,防抖和节流的区别,应用场景?你的回答中不要写出示例代码。防抖(Debounce)和节流(Throttle)是两种常用的前端性能优化技术,它们的主要区别在于如何处理高频事件的触发。以下是防抖和节流的区别和应用场景的详细说明:防抖和节流的定义防抖:在一段时间内,多次执行变为只执行最后一次。防抖的原理是,当事件被触发后,设置一个延迟定时器。如果在这个延迟时间内事件再次被触发,则重
微信小程序开发注意事项
jun778895
微信小程序 小程序
微信小程序开发是一个融合了前端开发、用户体验设计、后端服务(可选)以及微信小程序平台特性的综合性项目。这里,我将详细介绍一个典型的小程序开发项目的全过程,包括项目规划、设计、开发、测试及部署上线等各个环节,并尽量使内容达到或超过2000字的要求。一、项目规划1.1项目背景与目标假设我们要开发一个名为“智慧校园助手”的微信小程序,旨在为学生提供一站式校园生活服务,包括课程表查询、图书馆座位预约、食堂
字节二面
Redstone Monstrosity
前端 面试
1.假设你是正在面试前端开发工程师的候选人,面试官让你详细说出你上一段实习过程的收获和感悟。在上一段实习过程中,我获得了宝贵的实践经验和深刻的行业洞察,以下是我的主要收获和感悟:一、专业技能提升框架应用熟练度:通过实际项目,我深入掌握了React、Vue等前端框架的使用,不仅提升了编码效率,还学会了如何根据项目需求选择合适的框架。问题解决能力:在实习期间,我遇到了许多预料之外的技术难题。通过查阅文
前端代码上传文件
余生逆风飞翔
前端 javascript 开发语言
点击上传文件import{ElNotification}from'element-plus'import{API_CONFIG}from'../config/index.js'import{UploadFilled}from'@element-plus/icons-vue'import{reactive}from'vue'import{BASE_URL}from'../config/index'i
uniapp实现动态标记效果详细步骤【前端开发】
2401_85123349
uni-app
第二个点在于实现将已经被用户标记的内容在下一次获取后刷新它的状态为已标记。这是什么意思呢?比如说上面gif图中的这些人物对象,有一些已被该用户添加为关心,那么当用户下一次进入该页面时,这些已经被添加关心的对象需要以“红心”状态显现出来。这个点的难度还不算大,只需要在每一次获取后端的内容后对标记对象进行状态更新即可。II.动态标记效果实现思路和步骤首先,整体的思路是利用动态类名对不同的元素进行选择。
360前端星计划-动画可以这么玩
马小蜗
动画的基本原理定时器改变对象的属性根据新的属性重新渲染动画functionupdate(context){//更新属性}constticker=newTicker();ticker.tick(update,context);动画的种类1、JavaScript动画操作DOMCanvas2、CSS动画transitionanimation3、SVG动画SMILJS动画的优缺点优点:灵活度、可控性、性能
h5小游戏定制开发
红匣子实力推荐
随着科技的不断发展,移动互联网已经成为人们生活中不可或缺的一部分。在这个背景下,H5小游戏应运而生,为人们带来了丰富的娱乐体验。H5小游戏定制开发作为一种新兴的游戏开发方式,正逐渐受到市场的关注和青睐。那么,什么是H5小游戏定制开发呢?它又具有哪些特点和优势呢?让我们一起来深入了解一下。首先,我们来了解一下H5小游戏的基本概念。H5小游戏是一种基于HTML5技术的游戏,可以在移动端、PC端等多平台
Vue + Express实现一个表单提交
九旬大爷的梦
最近在折腾一个cms系统,用的vue+express,但是就一个表单提交就弄了好久,记录一下。环境:Node10+前端:Vue服务端:Express依赖包:vueexpressaxiosexpress-formidableelement-ui(可选)前言:axiosget请求参数是:paramsaxiospost请求参数是:dataexpressget接受参数是req.queryexpresspo
前端知识点
ZhangTao_zata
前端 javascript css
下面是一个最基本的html代码body{font-family:Arial,sans-serif;margin:20px;}//JavaScriptfunctionthatdisplaysanalertwhencalledfunctionshowMessage(){alert("Hello!Youclickedthebutton.");}MyFirstHTMLPageWelcometoMyPage
第三十一节:Vue路由:前端路由vs后端路由的了解
曹老师
1.认识前端路由和后端路由前端路由相对于后端路由而言的,在理解前端路由之前先对于路由有一个基本的了解路由:简而言之,就是把信息从原地址传输到目的地的活动对于我们来说路由就是:根据不同的url地址展示不同的页面内容1.1后端路由以前咱们接触比较多的后端路由,当改变url地址时,浏览器会向服务器发送请求,服务器根据这个url,返回不同的资源内容后端路由的特点就是前端每次跳转到不同url地址,都会重新访
华雁智科前端面试题
因为奋斗超太帅啦
前端笔试面试问题整理 javascript 开发语言 ecmascript
1.var变量的提升题目:vara=1functionfun(){console.log(b)varb=2}fun()console.log(a)正确输出结果:undefined、1答错了,给一个大嘴巴子,错误答案输出结果为:2,1此题主要考察var定义的变量,作用域提升的问题,相当于varaa=1functionfun(){varbconsole.log(b)b=2}fun()console.l
如何建设数据中台(五)——数据汇集—打破企业数据孤岛
weixin_47088026
学习记录和总结 中台 数据中台 程序人生 经验分享
数据汇集——打破企业数据孤岛要构建企业级数据中台,第一步就是将企业内部各个业务系统的数据实现互通互联,打破数据孤岛,主要通过数据汇聚和交换来实现。企业采集的数据可以是线上采集、线下数据采集、互联网数据采集、内部数据采集等。线上数据采集主要载体分为互联网和移动互联网两种,对应有系统平台、网页、H5、小程序、App等,可以采用前端或后端埋点方式采集数据。线下数据采集主要是通过硬件来采集,例如:WiFi
分布式锁和spring事务管理
暴躁的鱼
锁及事务 分布式 spring java
最近开发一个小程序遇到一个需求需要实现分布式事务管理业务需求用户在使用小程序的过程中可以查看景点,对景点地区或者城市标记是否想去,那么需要统计一个地点被标记的人数,以及记录某个用户对某个地点是否标记为想去,用两个表存储数据,一个地点表记录改地点被标记的次数,一个用户意向表记录某个用户对某个地点是否标记为想去。由于可能有多个用户同时标记一个地点,每个用户在前端点击想去按钮之后,后台接收到请求,从数据
前端CSS面试常见题
剑亦未配妥
前端面试 前端 css 面试
边界塌陷盒模型有两种:W3C盒模型和IE盒模型,区别在于宽度是否包含边框定义:同时给兄弟/父子盒模型设置上下边距,理论上边距值是两者之和,实际上不是注意:浮动和定位不会产生边界塌陷;只有块级元素垂直方向才会产生margin合并margin计算方案margin同为正负:取绝对值大的值一正一负:求和父子元素边界塌陷解决父元素可以通过调整padding处理;设置overflowhidden,触发BFC子
【JS】前端文件读取FileReader操作总结
程序员-张师傅
前端 前端 javascript 开发语言
前端文件读取FileReader操作总结FileReader是JavaScript中的一个WebAPI,它允许web应用程序异步读取用户计算机上的文件(或原始数据缓冲区)的内容,例如读取文件以获取其内容,并在不将文件发送到服务器的情况下在客户端使用它。这对于处理图片、文本文件等非常有用,尤其是当你想要在用户界面中即时显示文件内容或进行文件预览时。创建FileReader对象首先,你需要创建一个Fi
【前端】vue 报错:The template root requires exactly one element
程序员-张师傅
前端 前端 vue.js javascript
【前端】vue报错:Thetemplaterootrequiresexactlyoneelement在Vue.js中,当你遇到错误“Thetemplaterootrequiresexactlyoneelement”时,这通常意味着你的Vue组件的模板(template)根节点不是单一的元素。Vue要求每个组件的模板必须有一个根元素来包裹所有的子元素。这个错误通常出现在以下几种情况:模板中有多个并行
从单体到微服务:FastAPI ‘挂载’子应用程序的转变
黑金IT
fastapi 微服务 fastapi 架构
在现代Web应用开发中,模块化架构是一种常见的设计模式,它有助于将大型应用程序分解为更小、更易于管理的部分。FastAPI,作为一个高性能的PythonWeb框架,提供了强大的支持来实现这种模块化设计。通过“挂载”子应用程序,我们可以为不同的功能区域(如前端接口、管理员接口和用户中心)创建独立的应用程序,并将它们整合到一个主应用程序中。本文将详细介绍如何在FastAPI中使用“挂载”子应用程序的方
创建一个完整的购物商城系统是一个复杂的项目,涉及前端(用户界面)、后端(服务器逻辑)、数据库等多个部分。由于篇幅限制,我无法在这里提供一个完整的系统代码,但我可以分别给出一些关键部分的示例代码,涵盖几
uthRaman
前端 ui 服务器
前端(HTML/CSS/JavaScript)grsyzp.cnHTML页面结构(index.html)html购物商城欢迎来到购物商城JavaScript(Ajax请求商品数据,app.js)javascriptdocument.addEventListener('DOMContentLoaded',function(){fetch('/api/products').then(response=
了解 UNPKG:前端开发者的包管理利器
小于负无穷
前端 javascript typescript css html5 node.js
在现代前端开发中,JavaScript包管理和模块化是至关重要的,而npm则是最流行的JavaScript包管理器之一。不过,随着前端项目复杂性的增加,有时候我们希望快速引入外部依赖,而无需本地安装和构建。此时,CDN(内容分发网络)成为了一种方便快捷的解决方案,而UNPKG就是这种方式中的佼佼者。什么是UNPKG?UNPKG是一个基于npm的内容分发网络(CDN),它允许开发者直接通过URL从n
前端three.js的Sprite模拟下雪动画效果
qq_35430208
three.js 前端 javascript 三维场景中下雪效果 threejs实现下雪效果
一、效果如图所示:二、原理同下雨一样三、完整代码:index.jsimport*asTHREEfrom'three';import{OrbitControls}from'three/addons/controls/OrbitControls.js';importmodelfrom'./model.js';//模型对象//场景constscene=newTHREE.Scene();scene.add
系列3:【深入】qiankun动态与按需加载子应用—像电影一样控制出现时机
rabbit_it
qiankun学习 前端框架 前端 阿里云
一、引言:为何需要动态加载在现代前端开发中,性能优化始终是一个关键问题。对于微前端架构而言,管理多个子应用带来了前所未有的灵活性,但也对资源的加载和使用效率提出了更高要求。假设你的微前端项目就像一场电影,而子应用是场景或演员。在不同的情节中,我们只需要特定的场景和演员出现,而不需要所有场景和演员一开始就站在舞台上等待。这时,动态加载和按需加载就成为了关键工具——让需要的内容在正确的时机上场,节省性
ODOO不同版本与平台选择
chouchengyin2080
c# 操作系统 运维
1.10.0vs11.0vs8.0截至2017年底,最新的ODOO发布版为ODOO11.0,但功能上有一定精简(去除财务模块,去除工作流支持),技术上变动较大(代码逐步迁移至Python3,前端框架改写得抽象)。所以如果是从生产使用的角度来讲,ODOO10.0是当前最好选择,因为其更稳定,第三方模块也更多更全面。而如果是ODOO技术爱好从业者,则逐步迁移至ODOO11.0也有必要,因为其底层技术架
Java开发中,spring mvc 的线程怎么调用?
小麦麦子
spring mvc
今天逛知乎,看到最近很多人都在问spring mvc 的线程http://www.maiziedu.com/course/java/ 的启动问题,觉得挺有意思的,那哥们儿问的也听仔细,下面的回答也很详尽,分享出来,希望遇对遇到类似问题的Java开发程序猿有所帮助。
问题:
在用spring mvc架构的网站上,设一线程在虚拟机启动时运行,线程里有一全局
maven依赖范围
bitcarter
maven
1.test 测试的时候才会依赖,编译和打包不依赖,如junit不被打包
2.compile 只有编译和打包时才会依赖
3.provided 编译和测试的时候依赖,打包不依赖,如:tomcat的一些公用jar包
4.runtime 运行时依赖,编译不依赖
5.默认compile
依赖范围compile是支持传递的,test不支持传递
1.传递的意思是项目A,引用
Jaxb org.xml.sax.saxparseexception : premature end of file
darrenzhu
xml premature JAXB
如果在使用JAXB把xml文件unmarshal成vo(XSD自动生成的vo)时碰到如下错误:
org.xml.sax.saxparseexception : premature end of file
很有可能时你直接读取文件为inputstream,然后将inputstream作为构建unmarshal需要的source参数。InputSource inputSource = new In
CSS Specificity
周凡杨
html 权重 Specificity css
有时候对于页面元素设置了样式,可为什么页面的显示没有匹配上呢? because specificity
CSS 的选择符是有权重的,当不同的选择符的样式设置有冲突时,浏览器会采用权重高的选择符设置的样式。
规则:
HTML标签的权重是1
Class 的权重是10
Id 的权重是100
java与servlet
g21121
servlet
servlet 搞java web开发的人一定不会陌生,而且大家还会时常用到它。
下面是java官方网站上对servlet的介绍: java官网对于servlet的解释 写道
Java Servlet Technology Overview Servlets are the Java platform technology of choice for extending and enha
eclipse中安装maven插件
510888780
eclipse maven
1.首先去官网下载 Maven:
http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.2.3-bin.tar.gz
下载完成之后将其解压,
我将解压后的文件夹:apache-maven-3.2.3,
并将它放在 D:\tools目录下,
即 maven 最终的路径是:D:\tools\apache-mave
jpa@OneToOne关联关系
布衣凌宇
jpa
Nruser里的pruserid关联到Pruser的主键id,实现对一个表的增删改,另一个表的数据随之增删改。
Nruser实体类
//*****************************************************************
@Entity
@Table(name="nruser")
@DynamicInsert @Dynam
我的spring学习笔记11-Spring中关于声明式事务的配置
aijuans
spring 事务 配置
这两天学到事务管理这一块,结合到之前的terasoluna框架,觉得书本上讲的还是简单阿。我就把我从书本上学到的再结合实际的项目以及网上看到的一些内容,对声明式事务管理做个整理吧。我看得Spring in Action第二版中只提到了用TransactionProxyFactoryBean和<tx:advice/>,定义注释驱动这三种,我承认后两种的内容很好,很强大。但是实际的项目当中
java 动态代理简单实现
antlove
java handler proxy dynamic service
dynamicproxy.service.HelloService
package dynamicproxy.service;
public interface HelloService {
public void sayHello();
}
dynamicproxy.service.impl.HelloServiceImpl
package dynamicp
JDBC连接数据库
百合不是茶
JDBC编程 JAVA操作oracle数据库
如果我们要想连接oracle公司的数据库,就要首先下载oralce公司的驱动程序,将这个驱动程序的jar包导入到我们工程中;
JDBC链接数据库的代码和固定写法;
1,加载oracle数据库的驱动;
&nb
单例模式中的多线程分析
bijian1013
java thread 多线程 java多线程
谈到单例模式,我们立马会想到饿汉式和懒汉式加载,所谓饿汉式就是在创建类时就创建好了实例,懒汉式在获取实例时才去创建实例,即延迟加载。
饿汉式:
package com.bijian.study;
public class Singleton {
private Singleton() {
}
// 注意这是private 只供内部调用
private static
javascript读取和修改原型特别需要注意原型的读写不具有对等性
bijian1013
JavaScript prototype
对于从原型对象继承而来的成员,其读和写具有内在的不对等性。比如有一个对象A,假设它的原型对象是B,B的原型对象是null。如果我们需要读取A对象的name属性值,那么JS会优先在A中查找,如果找到了name属性那么就返回;如果A中没有name属性,那么就到原型B中查找name,如果找到了就返回;如果原型B中也没有
【持久化框架MyBatis3六】MyBatis3集成第三方DataSource
bit1129
dataSource
MyBatis内置了数据源的支持,如:
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<data
我程序中用到的urldecode和base64decode,MD5
bitcarter
c MD5 base64decode urldecode
这里是base64decode和urldecode,Md5在附件中。因为我是在后台所以需要解码:
string Base64Decode(const char* Data,int DataByte,int& OutByte)
{
//解码表
const char DecodeTable[] =
{
0, 0, 0, 0, 0, 0
腾讯资深运维专家周小军:QQ与微信架构的惊天秘密
ronin47
社交领域一直是互联网创业的大热门,从PC到移动端,从OICQ、MSN到QQ。到了移动互联网时代,社交领域应用开始彻底爆发,直奔黄金期。腾讯在过去几年里,社交平台更是火到爆,QQ和微信坐拥几亿的粉丝,QQ空间和朋友圈各种刷屏,写心得,晒照片,秀视频,那么谁来为企鹅保驾护航呢?支撑QQ和微信海量数据背后的架构又有哪些惊天内幕呢?本期大讲堂的内容来自今年2月份ChinaUnix对腾讯社交网络运营服务中心
java-69-旋转数组的最小元素。把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素
bylijinnan
java
public class MinOfShiftedArray {
/**
* Q69 旋转数组的最小元素
* 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。
* 例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。
*/
publ
看博客,应该是有方向的
Cb123456
反省 看博客
看博客,应该是有方向的:
我现在就复习以前的,在补补以前不会的,现在还不会的,同时完善完善项目,也看看别人的博客.
我刚突然想到的:
1.应该看计算机组成原理,数据结构,一些算法,还有关于android,java的。
2.对于我,也快大四了,看一些职业规划的,以及一些学习的经验,看看别人的工作总结的.
为什么要写
[开源与商业]做开源项目的人生活上一定要朴素,尽量减少对官方和商业体系的依赖
comsci
开源项目
为什么这样说呢? 因为科学和技术的发展有时候需要一个平缓和长期的积累过程,但是行政和商业体系本身充满各种不稳定性和不确定性,如果你希望长期从事某个科研项目,但是却又必须依赖于某种行政和商业体系,那其中的过程必定充满各种风险。。。
所以,为避免这种不确定性风险,我
一个 sql优化 ([精华] 一个查询优化的分析调整全过程!很值得一看 )
cwqcwqmax9
sql
见 http://www.itpub.net/forum.php?mod=viewthread&tid=239011
Web翻页优化实例
提交时间: 2004-6-18 15:37:49 回复 发消息
环境:
Linux ve
Hibernat and Ibatis
dashuaifu
Hibernate ibatis
Hibernate VS iBATIS 简介 Hibernate 是当前最流行的O/R mapping框架,当前版本是3.05。它出身于sf.net,现在已经成为Jboss的一部分了 iBATIS 是另外一种优秀的O/R mapping框架,当前版本是2.0。目前属于apache的一个子项目了。 相对Hibernate“O/R”而言,iBATIS 是一种“Sql Mappi
备份MYSQL脚本
dcj3sjt126com
mysql
#!/bin/sh
# this shell to backup mysql
#
[email protected] (QQ:1413161683 DuChengJiu)
_dbDir=/var/lib/mysql/
_today=`date +%w`
_bakDir=/usr/backup/$_today
[ ! -d $_bakDir ] && mkdir -p
iOS第三方开源库的吐槽和备忘
dcj3sjt126com
ios
转自
ibireme的博客 做iOS开发总会接触到一些第三方库,这里整理一下,做一些吐槽。 目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code、SourceForge等地方。由于Github社区太过主流,这里主要介绍一下Github里面流行的iOS库。 首先整理了一份
Github上排名靠
html wlwmanifest.xml
eoems
html xml
所谓优化wp_head()就是把从wp_head中移除不需要元素,同时也可以加快速度。
步骤:
加入到function.php
remove_action('wp_head', 'wp_generator');
//wp-generator移除wordpress的版本号,本身blog的版本号没什么意义,但是如果让恶意玩家看到,可能会用官网公布的漏洞攻击blog
remov
浅谈Java定时器发展
hacksin
java 并发 timer 定时器
java在jdk1.3中推出了定时器类Timer,而后在jdk1.5后由Dou Lea从新开发出了支持多线程的ScheduleThreadPoolExecutor,从后者的表现来看,可以考虑完全替代Timer了。
Timer与ScheduleThreadPoolExecutor对比:
1.
Timer始于jdk1.3,其原理是利用一个TimerTask数组当作队列
移动端页面侧边导航滑入效果
ini
jquery Web html5 css javascirpt
效果体验:http://hovertree.com/texiao/mobile/2.htm可以使用移动设备浏览器查看效果。效果使用到jquery-2.1.4.min.js,该版本的jQuery库是用于支持HTML5的浏览器上,不再兼容IE8以前的浏览器,现在移动端浏览器一般都支持HTML5,所以使用该jQuery没问题。HTML文件代码:
<!DOCTYPE html>
<h
AspectJ+Javasist记录日志
kane_xie
aspectj javasist
在项目中碰到这样一个需求,对一个服务类的每一个方法,在方法开始和结束的时候分别记录一条日志,内容包括方法名,参数名+参数值以及方法执行的时间。
@Override
public String get(String key) {
// long start = System.currentTimeMillis();
// System.out.println("Be
redis学习笔记
MJC410621
redis NoSQL
1)nosql数据库主要由以下特点:非关系型的、分布式的、开源的、水平可扩展的。
1,处理超大量的数据
2,运行在便宜的PC服务器集群上,
3,击碎了性能瓶颈。
1)对数据高并发读写。
2)对海量数据的高效率存储和访问。
3)对数据的高扩展性和高可用性。
redis支持的类型:
Sring 类型
set name lijie
get name lijie
set na
使用redis实现分布式锁
qifeifei
在多节点的系统中,如何实现分布式锁机制,其中用redis来实现是很好的方法之一,我们先来看一下jedis包中,有个类名BinaryJedis,它有个方法如下:
public Long setnx(final byte[] key, final byte[] value) {
checkIsInMulti();
client.setnx(key, value);
ret
BI并非万能,中层业务管理报表要另辟蹊径
张老师的菜
大数据 BI 商业智能 信息化
BI是商业智能的缩写,是可以帮助企业做出明智的业务经营决策的工具,其数据来源于各个业务系统,如ERP、CRM、SCM、进销存、HER、OA等。
BI系统不同于传统的管理信息系统,他号称是一个整体应用的解决方案,是融入管理思想的强大系统:有着系统整体的设计思想,支持对所有
安装rvm后出现rvm not a function 或者ruby -v后提示没安装ruby的问题
wudixiaotie
function
1.在~/.bashrc最后加入
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
2.重新启动terminal输入:
rvm use ruby-2.2.1 --default
把当前安装的ruby版本设为默