- 前端基础面试题·第二篇——CSS(其一)
DT——
前端面试前端css
1.伪类与伪元素伪类,是用来描述元素的一个状态,比如第一个元素,元素被鼠标覆盖等等状态,写法为:伪元素,用于设置一个元素的特殊状态的一部分,写法为::伪元素于伪类:伪元素:::before::after::first-line伪类::hover:active:focus:nth-child(n)2.单位px:像素,绝对单位em:相对单位,相对于父元素字体大小rem:相对单位,相对于根元素html的
- flex弹性布局;justify-content:space-between;最后一行左对齐
m0_56168677
踩坑csscss前端css3
第一种方式:需要在父级元素使用一个伪类,设置flex:1;使伪类自动填充剩余的空间;这种方式会使最后一行的边距失效:after{content:"";flex:1;}第二种方式:使用margin-right计算;这种方式适合每一行固定列数的情况;假设每一行只有3列元素,那么当最后一个元素是第二列(即.item:last-child:nth-child(3n+2))的情况,才需要进行margin-r
- python爬取微博热搜_Python 超简单爬取微博热搜榜数据
weixin_39835792
python爬取微博热搜
微博的热搜榜对于研究大众的流量有非常大的价值。今天的教程就来说说如何爬取微博的热搜榜。热搜榜的链接是:用浏览器浏览,发现在不登录的情况下也可以正常查看,那就简单多了。使用开发者工具(F12)查看页面逻辑,并拿到每条热搜的CSS位置,方法如下:按照这个方法,拿到这个td标签的selector是:pl_top_realtimehot>table>tbody>tr:nth-child(3)>td.td-
- CSS选择器
Mr.蔬菜
csscss3前端
目录1、基本选择器1)标签选择器2)id选择器3)类选择器4)通配选择器2、交集选择器3、派生选择器1)后代选择器2)子元素选择器3)兄弟选择器4)邻居选择器4、属性选择器1)简单属性选择器2)具体属性选择器3)子串属性选择器5、伪类选择器1):first-child和:last-child2):nth-child(n)3)状态伪类6、伪元素选择器7、结构伪类选择器1、:root2、:not3、:
- css加载中动画
永远的WEB小白
csscssjavascript前端
#loader.square:nth-child(5n+1){background:#0F9;animation-delay:0s;}#loader.square:nth-child(5n+2){background:#0CF;animation-delay:0.1s;}#loader.square:nth-child(5n+3){background:#93F;animation-delay:0
- web CSS3伪类选择器 :nth-child()
worldzhy
CSS
:nth-child()可以选择某个的一个或多个特定的子元素,你可以按这种方式进行选择::nth-child(length);/*参数是具体数字*/:nth-child(n);/*参数是n,n从0开始计算*/:nth-child(n*length)/*n的倍数选择,n从0开始算*/:nth-child(n+length);/*选择大于length后面的元素*/:nth-child(-n+lengt
- css选择器:nth-child()的用法
cdgogo
css
:nth-child():nth-child()选择器,该选择器选取父元素的第N个子元素,与类型无关。一、选择列表中的偶数标签:nth-child(2n)二、选择列表中的奇数标签:nth-child(2n-1)三、选择从第6个开始的,直到最后:nth-child(n+6)四、选择第1个到第6个:nth-child(-n+6)五、两者结合使用,可以限制选择某一个范围,选择第6个到第9个:nth-ch
- CSS的伪类选择器:nth-child()
kfepiza
HTMLCSSJScss前端
CSS的伪类选择器:nth-child()CSS的伪类选择器:nth-child()是一个非常强大的工具,它允许你根据元素在其父元素中的位置(序数)来选择特定的子元素。这个选择器可以应用于任何元素,并且可以与类型选择器、类选择器或ID选择器结合使用。:nth-child()选择器接受一个参数,该参数可以是整数、关键字(even或odd)或公式(如an+b)。正整数:直接选择第n个子元素。不能为负数
- 2024前端面试准备之CSS篇(二)
前端fighter
前端cssjavascript
全文链接1.什么是伪类和伪元素伪类(Pseudo-class):伪类是选择器的一种,用于选择特定状态或条件下的元素。它们以冒号(:)开头,用于向选择器添加额外的特定条件。例如,:hover伪类用于选择鼠标悬停在元素上的状态,:nth-child(n)伪类用于选择父元素下的第n个子元素等。伪元素(Pseudo-element):伪元素是选择器的一种,用于在元素的特定部分上添加样式。它们以双冒号(::
- 基于HTML+JS实现的简易双色球滚动代码
未休95
HTMLJavaScripthtmljavascript前端
在JS一侧限定7个数的范围,进行随机数的筛选,再将其渲染到页面上,并运用时间函数进行滚动。为了提升用户体验,所以开始按钮点击后,就得加个事件监听器把它禁用,直到点击结束按钮,开始按钮才恢复可使用状态。代码和注释都在下面,请君一阅。双色球section>div:nth-child(1){display:flex;margin-bottom:20px;}section>div:nth-child(1)
- css元素显示模式(行内、块级、行内块)
lxl211
csscsscss3前端
1.块级元素显示特点:1、独占一行(一行只能显示一个)2、宽度默认是父元素的宽度,高度默认由内容撑开3、可以设置宽高代表标签:div、p、h系列、ul、li、dl、dt、dd、form、header、anv、footerdiv:nth-child(1){/*块级元素默认和父亲一样宽度*/height:300px;background-color:pink;}关于块级元素的一些想法如果想让一个块级盒
- H5/CSS 笔试面试考题(41-50)
宇宙中的一颗星
h5/css笔试css面试前端
简述对于以下HTML,下列选项中哪一个CSS选择器效果与其他的不同()ABCA:span:first-childB:span:nth-child(0)C:span:nth-child(-n+1)D:span:nth-last-child(3)面试通过率:46.0%推荐指数:★★★★试题难度:初级试题类型:选择题答案:b解析:span:first-child选中第一个元素span:nth-child
- CSS伪类和伪元素
LBJ辉
语法数量位置类与元素使用场景伪类:多个前方和后方修饰多伪元素::单个后方创建对象少使用场景伪类状态类::link:visited:hover:active:focus结构类::first-child:last-child:nth-child:ninth-of-type表单类::checked:disabled:valid:required语言类::dir:lang伪元素::before::afte
- p标签里面不能嵌套ul、div等块级元素
PXRace
一直以为P标签作为块级元素,可以像div那样可以嵌套其他的块级元素。因为开发过程中没这样写的习惯,一直也就没有遇到过,直到面试被问到这个问题。于是代码操作一下看看:HTML解析的HTML结果发现父级包裹的P标签被解析成了两个P标签,这样一来我写的P标签就从没有兄弟节点变化成有两个兄弟节点了。如果写CSS的时候使用了nth-child()、last-child()这样的选择器,那么我们的样式是不是就
- 【前端web入门第五天】01 结构伪类选择器与伪元素选择器
小徐要考研
前端web开发前端csshtml5
文章目录:1.结构伪类选择器1.1nth-child(公式)2.伪元素选择器1.结构伪类选择器作用:根据元素的结构关系查找元素。选择器说明E:first-child查找第一个E元素E:last-child查找最后一个E元素E:nth-child(N)查找第N个E元素(第一个元素N值为1)一个列表结构使用结构伪类选择器的例子li:first-child{background-color:green;
- CSS之盒子模型
白小筠
#CSScss前端
盒子模型01-选择器结构伪类选择器基本使用作用:根据元素的结构关系查找元素。Document/*结构伪类选择器*//*1.选择第一个li*/ulli:first-child{color:pink;}/*2.最后一个小li*/ulli:last-child{color:green;}/*3.选择其中任意一个*/ulli:nth-child(6){color:red;}li{第$个}*8-->我是第1
- 文字超长显示省略号...坑(如果盒子本身是弹性盒子flex布局会不支持)
大力水手~
前端javascriptcss
如果盒子是弹性盒子样式会失效#item-title{font-size:28rpx;font-weight:800;color:#2D3748;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}&:nth-child(2){width:calc(100%-172rpx);margin-left:40rpx;>
- jquery写表格 手动合并单元格
猴猴不是猴
前端jqueryjavascript
.special-rowth:first-child,.special-rowth:nth-child(2){background-color:yellow;text-align:center;}日期姓名地址表头合并单元格vartableData=[{date:'2016-05-02',name:'王小虎',address:'上海市普陀区金沙江路1518弄'},{date:'2016-05-01'
- 超宽横向滚动
初晨未凉
笔记css3
Document#inner_box{white-space:nowrap;overflow-x:scroll;/*overflow-y:hidden;*/}.item{width:350px;height:200px;font-size:30px;display:inline-block;}.item:nth-child(odd){background:skyblue;}.item:nth-ch
- 判断元素是否在视口内
w晚风
判断元素是否在视口内ulli{list-style:none;padding:20px}li:nth-child(even){background:green}li:nth-child(odd){background:yellowgreen}1234567891011121314151617181920212223242526272829303132333435363738394041424344
- CSS3的新盒子,选择器等
爱踢粪球的虫
css3前端css
新增的选择器:属性选择器:结构伪类选择选器:nth较为重要:但公式中的字母必须是n区别:nth-child:认为父类下的都是儿子,此时就需要有对应的需要,如下,此时即使排1,但是1是p而选择器是div使得结果不能够将结果表达,就不会生效为红色。nth-of-type:会指定排序,即他是先看的标签元素,在执行后面的。伪元素选择器:伪元素也是相当于盒子的。也是拥有很多属性的,但是一定要有conten:
- li表格border重叠问题解决
一爷之秋
表格问题在h5开发中使用率非常高,例如表格显示、tab切换等等。表格在正常书写中添加边框会出现两个连在一起的现象,下面是其中一个解决方案,改变前显示1.给表格表框重叠方向加上margin值,代码如图加上margin-left后如图2.使用伪类选择器:nth-child()来区分奇偶元素分别设置边框https://blog.csdn.net/qq_34137397/article/details/7
- css蜂巢布局
勿忘初心
css前端javascript
蜂巢布局html{overflow:hidden;}//每行个数10(为了解决会有半个空缺情况,处理方法是减少一个元素或者在偶数行末尾增加一个元素)$n:9;//宽度=视口宽/每行个数$size:100vw/$n;.line{display:flex;margin-top:-$size/6;&:nth-child(even){transform:translateX(-$size/2);}}.it
- 【CSS】css选择器和css获取第n个元素(:nth-of-type(n)、:nth-child(n)、first-child和last-child)
香菜啵子欸
CSScss前端
:nth-of-type、:nth-child的区别一、css选择器二、:nth-of-type、:nth-child的区别:nth-of-type(n):选择器匹配属于父元素的特定类型的第N个子元素:nth-child(n):选择器匹配属于其父元素的第N个子元素,不论元素的类型:first-child:获取元素的第1个子元素:last-child:获取元素的最后一个个子元素效果一、css选择器选
- 【前端】快速掌握CSS-盒子模型
gravity_w
前端前端css笔记经验分享css3
文章目录一、选择器1.结构伪类选择器基本使用:nth-child(公式)2.伪元素选择器二、PxCook三、盒子模型1.盒子模型-组成2.边框线(1)四个方向相同(2)单方向边框线2.内边距3.尺寸计算4.外边距5.版心居中6.清除默认样式7.元素溢出8.外边距问题(1)合并现象(2)外边距塌陷9.行内元素–内外边距问题10.圆角11.盒子阴影(拓展)四、综合案例-产品卡片1.HTML标签2.CS
- day05-盒子模型
是程序喵呀
WEB前端css前端html
01-选择器结构伪类选择器基本使用作用:根据元素的结构关系查找元素。li:first-child{ background-color:green;}:nth-child(公式)提示:公式中的n取值从0开始。伪元素选择器作用:创建虚拟元素(伪元素),用来摆放装饰性的内容。div::before{ content:"before伪元素";}div::after{ content:"after伪元素";
- 在CSS中如何寻找第一个元素
小小优化师 anny
Htmlcss前端
ulli:first-child{color:red;}在CSS中,要找到第一个元素,可以使用:first-child选择器。该选择器可以用于选择父元素下的第一个子元素。例如,要选择一个ul元素下的第一个li元素,可以使用下面的代码:上面的代码将ul元素下的第一个li元素的文字颜色设置为红色。除了:first-child选择器,还可以使用:nth-child()选择器来选择父元素下的指定子元素。该
- 水波浪标题
与妖为邻
javascript开发语言ecmascript
上图效果要先复制第13次修改的备忘录,再另外保存下面的代码:水波浪标题.h1-div{/*隐藏*/display:none;}h1{display:inline;color:rgb(155,52,52);position:absolute;font-size:6rem;}h1:nth-child(1){color:transparent;-webkit-text-stroke:2pxrgb(13,
- WEB前端media查询/font-fize/以及2D变换效果的实现
桔梗.py
前端
WEB前端DAY7练习nth-child和nth-type区别nth-child会判断集合中的第n个标签是否是伪类前面的标签nth-type则会根据标签生成合集去其中的第n个标签body>div:nth-of-type(2){border-top:10pxsolidgreen;border-left:10pxdashedgreen;width:100px;height:100px;}body>di
- 微信小程序-02
菜♕卷
微信小程序微信小程序小程序
swiper和swiper-item组件的基本使用轮播图ABC/*pages/list/list.wxss*/.swiper-container{height:150px;}.item{height:100%;line-height:150px;text-align:center;}swiper-item:nth-child(1).item{background-color:seagreen;}s
- 戴尔笔记本win8系统改装win7系统
sophia天雪
win7戴尔改装系统win8
戴尔win8 系统改装win7 系统详述
第一步:使用U盘制作虚拟光驱:
1)下载安装UltraISO:注册码可以在网上搜索。
2)启动UltraISO,点击“文件”—》“打开”按钮,打开已经准备好的ISO镜像文
- BeanUtils.copyProperties使用笔记
bylijinnan
java
BeanUtils.copyProperties VS PropertyUtils.copyProperties
两者最大的区别是:
BeanUtils.copyProperties会进行类型转换,而PropertyUtils.copyProperties不会。
既然进行了类型转换,那BeanUtils.copyProperties的速度比不上PropertyUtils.copyProp
- MyEclipse中文乱码问题
0624chenhong
MyEclipse
一、设置新建常见文件的默认编码格式,也就是文件保存的格式。
在不对MyEclipse进行设置的时候,默认保存文件的编码,一般跟简体中文操作系统(如windows2000,windowsXP)的编码一致,即GBK。
在简体中文系统下,ANSI 编码代表 GBK编码;在日文操作系统下,ANSI 编码代表 JIS 编码。
Window-->Preferences-->General -
- 发送邮件
不懂事的小屁孩
send email
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.apache.commons.mail.MultiPartEmail;
- 动画合集
换个号韩国红果果
htmlcss
动画 指一种样式变为另一种样式 keyframes应当始终定义0 100 过程
1 transition 制作鼠标滑过图片时的放大效果
css
.wrap{
width: 340px;height: 340px;
position: absolute;
top: 30%;
left: 20%;
overflow: hidden;
bor
- 网络最常见的攻击方式竟然是SQL注入
蓝儿唯美
sql注入
NTT研究表明,尽管SQL注入(SQLi)型攻击记录详尽且为人熟知,但目前网络应用程序仍然是SQLi攻击的重灾区。
信息安全和风险管理公司NTTCom Security发布的《2015全球智能威胁风险报告》表明,目前黑客攻击网络应用程序方式中最流行的,要数SQLi攻击。报告对去年发生的60亿攻击 行为进行分析,指出SQLi攻击是最常见的网络应用程序攻击方式。全球网络应用程序攻击中,SQLi攻击占
- java笔记2
a-john
java
类的封装:
1,java中,对象就是一个封装体。封装是把对象的属性和服务结合成一个独立的的单位。并尽可能隐藏对象的内部细节(尤其是私有数据)
2,目的:使对象以外的部分不能随意存取对象的内部数据(如属性),从而使软件错误能够局部化,减少差错和排错的难度。
3,简单来说,“隐藏属性、方法或实现细节的过程”称为——封装。
4,封装的特性:
4.1设置
- [Andengine]Error:can't creat bitmap form path “gfx/xxx.xxx”
aijuans
学习Android遇到的错误
最开始遇到这个错误是很早以前了,以前也没注意,只当是一个不理解的bug,因为所有的texture,textureregion都没有问题,但是就是提示错误。
昨天和美工要图片,本来是要背景透明的png格式,可是她却给了我一个jpg的。说明了之后她说没法改,因为没有png这个保存选项。
我就看了一下,和她要了psd的文件,还好我有一点
- 自己写的一个繁体到简体的转换程序
asialee
java转换繁体filter简体
今天调研一个任务,基于java的filter实现繁体到简体的转换,于是写了一个demo,给各位博友奉上,欢迎批评指正。
实现的思路是重载request的调取参数的几个方法,然后做下转换。
- android意图和意图监听器技术
百合不是茶
android显示意图隐式意图意图监听器
Intent是在activity之间传递数据;Intent的传递分为显示传递和隐式传递
显式意图:调用Intent.setComponent() 或 Intent.setClassName() 或 Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。
隐式意图;不指明调用的名称,根据设
- spring3中新增的@value注解
bijian1013
javaspring@Value
在spring 3.0中,可以通过使用@value,对一些如xxx.properties文件中的文件,进行键值对的注入,例子如下:
1.首先在applicationContext.xml中加入:
<beans xmlns="http://www.springframework.
- Jboss启用CXF日志
sunjing
logjbossCXF
1. 在standalone.xml配置文件中添加system-properties:
<system-properties> <property name="org.apache.cxf.logging.enabled" value=&
- 【Hadoop三】Centos7_x86_64部署Hadoop集群之编译Hadoop源代码
bit1129
centos
编译必需的软件
Firebugs3.0.0
Maven3.2.3
Ant
JDK1.7.0_67
protobuf-2.5.0
Hadoop 2.5.2源码包
Firebugs3.0.0
http://sourceforge.jp/projects/sfnet_findbug
- struts2验证框架的使用和扩展
白糖_
框架xmlbeanstruts正则表达式
struts2能够对前台提交的表单数据进行输入有效性校验,通常有两种方式:
1、在Action类中通过validatexx方法验证,这种方式很简单,在此不再赘述;
2、通过编写xx-validation.xml文件执行表单验证,当用户提交表单请求后,struts会优先执行xml文件,如果校验不通过是不会让请求访问指定action的。
本文介绍一下struts2通过xml文件进行校验的方法并说
- 记录-感悟
braveCS
感悟
再翻翻以前写的感悟,有时会发现自己很幼稚,也会让自己找回初心。
2015-1-11 1. 能在工作之余学习感兴趣的东西已经很幸福了;
2. 要改变自己,不能这样一直在原来区域,要突破安全区舒适区,才能提高自己,往好的方面发展;
3. 多反省多思考;要会用工具,而不是变成工具的奴隶;
4. 一天内集中一个定长时间段看最新资讯和偏流式博
- 编程之美-数组中最长递增子序列
bylijinnan
编程之美
import java.util.Arrays;
import java.util.Random;
public class LongestAccendingSubSequence {
/**
* 编程之美 数组中最长递增子序列
* 书上的解法容易理解
* 另一方法书上没有提到的是,可以将数组排序(由小到大)得到新的数组,
* 然后求排序后的数组与原数
- 读书笔记5
chengxuyuancsdn
重复提交struts2的token验证
1、重复提交
2、struts2的token验证
3、用response返回xml时的注意
1、重复提交
(1)应用场景
(1-1)点击提交按钮两次。
(1-2)使用浏览器后退按钮重复之前的操作,导致重复提交表单。
(1-3)刷新页面
(1-4)使用浏览器历史记录重复提交表单。
(1-5)浏览器重复的 HTTP 请求。
(2)解决方法
(2-1)禁掉提交按钮
(2-2)
- [时空与探索]全球联合进行第二次费城实验的可能性
comsci
二次世界大战前后,由爱因斯坦参加的一次在海军舰艇上进行的物理学实验 -费城实验
至今给我们大家留下很多迷团.....
关于费城实验的详细过程,大家可以在网络上搜索一下,我这里就不详细描述了
在这里,我的意思是,现在
- easy connect 之 ORA-12154: TNS: 无法解析指定的连接标识符
daizj
oracleORA-12154
用easy connect连接出现“tns无法解析指定的连接标示符”的错误,如下:
C:\Users\Administrator>sqlplus username/
[email protected]:1521/orcl
SQL*Plus: Release 10.2.0.1.0 – Production on 星期一 5月 21 18:16:20 2012
Copyright (c) 198
- 简单排序:归并排序
dieslrae
归并排序
public void mergeSort(int[] array){
int temp = array.length/2;
if(temp == 0){
return;
}
int[] a = new int[temp];
int
- C语言中字符串的\0和空格
dcj3sjt126com
c
\0 为字符串结束符,比如说:
abcd (空格)cdefg;
存入数组时,空格作为一个字符占有一个字节的空间,我们
- 解决Composer国内速度慢的办法
dcj3sjt126com
Composer
用法:
有两种方式启用本镜像服务:
1 将以下配置信息添加到 Composer 的配置文件 config.json 中(系统全局配置)。见“例1”
2 将以下配置信息添加到你的项目的 composer.json 文件中(针对单个项目配置)。见“例2”
为了避免安装包的时候都要执行两次查询,切记要添加禁用 packagist 的设置,如下 1 2 3 4 5
- 高效可伸缩的结果缓存
shuizhaosi888
高效可伸缩的结果缓存
/**
* 要执行的算法,返回结果v
*/
public interface Computable<A, V> {
public V comput(final A arg);
}
/**
* 用于缓存数据
*/
public class Memoizer<A, V> implements Computable<A,
- 三点定位的算法
haoningabc
c算法
三点定位,
已知a,b,c三个顶点的x,y坐标
和三个点都z坐标的距离,la,lb,lc
求z点的坐标
原理就是围绕a,b,c 三个点画圆,三个圆焦点的部分就是所求
但是,由于三个点的距离可能不准,不一定会有结果,
所以是三个圆环的焦点,环的宽度开始为0,没有取到则加1
运行
gcc -lm test.c
test.c代码如下
#include "stdi
- epoll使用详解
jimmee
clinux服务端编程epoll
epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linu
- Hibernate对Enum的映射的基本使用方法
linzx0212
enumHibernate
枚举
/**
* 性别枚举
*/
public enum Gender {
MALE(0), FEMALE(1), OTHER(2);
private Gender(int i) {
this.i = i;
}
private int i;
public int getI
- 第10章 高级事件(下)
onestopweb
事件
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
- 孙子兵法
roadrunners
孙子兵法
始计第一
孙子曰:
兵者,国之大事,死生之地,存亡之道,不可不察也。
故经之以五事,校之以计,而索其情:一曰道,二曰天,三曰地,四曰将,五
曰法。道者,令民于上同意,可与之死,可与之生,而不危也;天者,阴阳、寒暑
、时制也;地者,远近、险易、广狭、死生也;将者,智、信、仁、勇、严也;法
者,曲制、官道、主用也。凡此五者,将莫不闻,知之者胜,不知之者不胜。故校
之以计,而索其情,曰
- MySQL双向复制
tomcat_oracle
mysql
本文包括:
主机配置
从机配置
建立主-从复制
建立双向复制
背景
按照以下简单的步骤:
参考一下:
在机器A配置主机(192.168.1.30)
在机器B配置从机(192.168.1.29)
我们可以使用下面的步骤来实现这一点
步骤1:机器A设置主机
在主机中打开配置文件 ,
- zoj 3822 Domination(dp)
阿尔萨斯
Mina
题目链接:zoj 3822 Domination
题目大意:给定一个N∗M的棋盘,每次任选一个位置放置一枚棋子,直到每行每列上都至少有一枚棋子,问放置棋子个数的期望。
解题思路:大白书上概率那一张有一道类似的题目,但是因为时间比较久了,还是稍微想了一下。dp[i][j][k]表示i行j列上均有至少一枚棋子,并且消耗k步的概率(k≤i∗j),因为放置在i+1~n上等价与放在i+1行上,同理