CSS viewport/mediaquery

viewport 和 Mediaquery 都是为了进行响应式Web设计,即面对不同的设备有不同的样式而又不用开发不同的页面。
viewport 视口,移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那一块区域,最常见用法

1
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, maximum-scale=1.0, user-scalable=no">

width=device-width : 当前viewport的宽度等于设备的宽度
initial-scale=1.0 : 初始缩放比例1.0
maximum-scale=1.0 : 最大缩放比例1.0
minimum-scale=1.0 : 最小缩放比例1.0
user-scalable=no : 不允许用户手动缩放

阅读更多

css @supports 作用

@supports 可以指定依赖于浏览器中的一个或多个特定的CSS功能的支持声明,这被称为特性查询。

1
2
3
4
5
6
7
8
9
10
@supports (display: grid) {
div {
display: grid;
}
}
@supports not (display: grid) {
div {
float: right;
}
}

阅读更多

CSS transform & transition & animation属性

transition 过渡

transition 属性是 transition-property,transition-duration,transition-timing-function 和 transition-delay 的一个简写属性。transition 可以为一个元素在不同状态之间切换的时候定义不同的过渡效果。

属性 含义
transition-property 指定应用过渡属性的名称
transition-duration 以秒或毫秒为单位指定过渡动画所需的时间,默认为0s
transition-timing-function 用来描述 transition-property 中间值是怎样计算的, 默认 ease, 可选 ease-in,ease-out,ease-in-out,linear,step-start,step-end,steps(4, end),inherit,cubic-bezier(0.1, 0.7, 1.0, 0.1)
transition-delay 规定了在过渡效果开始作用之前需要等待的时间, 默认0s

在符合标准的浏览器中,transition效果结束时会触发 transitionend(propertyName, elapsedTime) 事件

阅读更多

头像的显示

在项目中遇到了上传头像图片的需求,包括两个部分,一个是头像的上传。另一个是上传后头像图片的显示。

头像的上传

头像的上传和普通的图片上传几乎没有不同,但通常需要对上传的图片进行限制,例如限制图片格式为png/jpg,图片大小的限制,图片像素的限制等。

阅读更多

Flex布局

Flex布局

Flex 是 Flexible Box 的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性,设为 Flex 布局以后,子元素的 float、clear 和 vertical-align 属性无效。

任何一个容器都可以指定为flex布局

1
2
3
4
.box {
display: -webkit-flex;
display: flex;
}

flex布局由父子元素共同组成,父元素被称为flex container,子元素被称为flex item。

flex

容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。

项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。

阅读更多

CSS postion属性

position四个属性

描述
absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。
此元素的位置可通过 “top”、”right”、”bottom” 以及 “left” 属性来规定。
relative 生成相对定位的元素,相对于其正常位置进行定位。
fixed 生成绝对定位的元素,相对于浏览器窗口进行定位。
元素的位置通过 “top”、”right”、”bottom” 以及 “left” 属性进行规定。
sticky 粘性布局,元素先按照普通文档流定位,然后相对于该元素在流中的 flow root(BFC)和 containing block(最近的块级祖先元素)定位,而后,元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。这个特定阈值指的是 “top”、”right”、”bottom” 以及 “left” 之一
static 默认值。static 元素会忽略任何 “top”、”right”、”bottom”、”left” 和 “z-index” 声明
inherit 规定应该从父元素继承 position 属性的值。position 属性默认是不继承的
initial 设置该属性为浏览器默认值,对 positon 属性来说就是 static
unset 将属性的值复位,如果该属性是默认继承属性,该值等同于 inherit ,如果该属性是非继承属性,该值等同于 initial 。对 positon 属性来说就是 static

阅读更多

CSS 长度单位

本篇主要列举并比较下CSS中常用到的几个长度单位。包含px、em、rem、vh、vw、rpx、in、cm、mm、ex、pt、pc。

阅读更多

CSS 截断

有时,我们需要对某段文字进行截断处理,多余的字符显示…

1
<div class="words">For a long time it seemed to me that life was about to begin , real life. But, there was always some obsacle in the way, something to be gotten through first, some unfinnished business, time still to be served or a debt to be paid. Then life would begin.</div>

阅读更多

修改光标的样式

某些情况下我们需要修改默认的光标样式,比如当我们为一个元素添加了点击事件之后,这个元素就会表现的像一个按钮。为了更好的用户体验,我们可以将光标样式由默认的箭头样式改为指针样式。这样,当用户划过此元素时,就会意识到这是一个可点击的元素。

阅读更多

改变placeholder的颜色

我们都知道输入框中改变默认显示的文字是通过改变 input 的 placeholder 来实现的

1
<input type="search" placeholder="Search..." />

部分浏览器通过改变类似 -webkit-input-placeholder 的属性,使得输入框的 placeholder 也可以有自己的样式。

阅读更多

CSS-选择器

选择器 例子 例子描述 css
.class .intro 选择 class=”intro” 的所有元素。 1
#id #firstname 选择 id=”firstname” 的所有元素。 1
* * 选择所有元素。 2
element p 选择所有 <p> 元素。 1
element,element div,p 选择所有 <div> 元素和所有 <p> 元素。 1
element element div p 选择 <div> 元素内部的所有 <p> 元素。 1
element>element div>p 选择父元素为 <div> 元素的所有 <p> 元素。 2
element+element div+p 选择紧接在 <div> 元素之后的所有 <p> 元素。 2
[attribute] [target] 选择带有 target 属性所有元素。 2
[attribute=value] [target=_blank] 选择 target=”_blank” 的所有元素。 2
[attribute~=value] [title~=flower] 选择 title 属性包含单词 “flower” 的所有元素。 2
[attribute|=value] [lang|=en] 选择 lang 属性值以 “en” 开头的所有元素。 2
:link a:link 选择所有未被访问的链接。 1
:visited a:visited 选择所有已被访问的链接。 1
:active a:active 选择活动链接。 1
:hover a:hover 选择鼠标指针位于其上的链接。 1
:focus input:focus 选择获得焦点的 input 元素。 2
:first-letter p:first-letter 选择每个 <p> 元素的首字母。 1
:first-line p:first-line 选择每个 <p> 元素的首行。 1
:first-child p:first-child 选择属于父元素的第一个子元素的每个 <p> 元素。 2
:before p:before 在每个 <p> 元素的内容之前插入内容。 2
:after p:after 在每个 <p> 元素的内容之后插入内容。 2
:lang(language) p:lang(it) 选择带有以 “it” 开头的 lang 属性值的每个 <p> 元素。 2
element1~element2 p~ul 选择前面有 <p> 元素的每个 <ul> 元素。 3
[attribute^=value] a[src^=”https”] 选择其 src 属性值以 “https” 开头的每个 <a> 元素。 3
[attribute$=value] a[src$=”.pdf”] 选择其 src 属性以 “.pdf” 结尾的所有 <a> 元素。 3
[attribute*=value] a[src*=”abc”] 选择其 src 属性中包含 “abc” 子串的每个 <a> 元素。 3
:first-of-type p:first-of-type 选择属于其父元素的首个 <p> 元素的每个 <p> 元素。 3
:last-of-type p:last-of-type 选择属于其父元素的最后 <p> 元素的每个 <p> 元素。 3
:only-of-type p:only-of-type 选择属于其父元素唯一的 <p> 元素的每个 <p> 元素。 3
:only-child p:only-child 选择属于其父元素的唯一子元素的每个 <p> 元素。 3
:nth-child(n) p:nth-child(2) 选择属于其父元素的第二个子元素的每个 <p> 元素。 3
:nth-last-child(n) p:nth-last-child(2) 同上,从最后一个子元素开始计数。 3
:nth-of-type(n) p:nth-of-type(2) 选择属于其父元素第二个 <p> 元素的每个 <p> 元素。 3
:nth-last-of-type(n) p:nth-last-of-type(2) 同上,但是从最后一个子元素开始计数。 3
:last-child p:last-child 选择属于其父元素最后一个子元素每个 <p> 元素。 3
:root :root 选择文档的根元素。 3
:empty p:empty 选择没有子元素的每个 <p> 元素(包括文本节点)。 3
:target #news:target 选择当前活动的 #news 元素。 3
:enabled input:enabled 选择每个启用的 <input> 元素。 3
:disabled input:disabled 选择每个禁用的 <input> 元素 3
:checked input:checked 选择每个被选中的 <input> 元素。 3
:not(selector) :not(p) 选择非 <p> 元素的每个元素。 3
::selection ::selection 选择被用户选取的元素部分。 3

阅读更多