前端小技巧整理(持续更新)

更新:2023-12-26

查找方法定义位置

有很多时候我们经常遇到,一个function不知道在那个文件中定义

//控制台上打印
var f = 函数名.prototype.constructor;
console.log(f);


点击上图红框位置,就会在控制台跳到对应的文件位置

元素筛选

nextAll()           /*后边全部元素*/
prevAll()           /*前边所有元素*/
children()          /*子元素*/
parent()            /*父元素(向上找一级)*/
parents()           /*父元素(全部父元素)*/
siblings()          /*兄弟元素*/
.replace(/<\/s>/g,"")           /*正则表达式删除是指定字符</s> ,\为在转义字符*/
ul>li:nth-child(n)             /*n可以是数字、even(奇)、odd(偶)、公式(2n-1)等*/
input[type="checkbox"]        /*标签[属性名='属性值']*/
input[type="radio"]:checked  /*复选框选中*/
input:disabled              /*input 禁止,(<input disabled>)*/
option:selected            /*下拉列表选中的 option*/

input复选框是否选中

/* JQ */
$("input").is(":checked")        /*返回 true/false*/
$("input").prop('checked')      /*返回 true/false*/
$("input").attr('checked')     /*返回 xx/undefined 属性判断,需添加checked 属性*/
/* 原生*/
var myInput = document.getElementById('myInput')
myInput.checked  /*返回 true/false*/

css样式

border: 1px dashed #F00         /*边框为虚线*/
letter-spacing                  /*字间距*/
border-spacing: 0;              /*去掉表格边距*/
resize:none ;                   /*<textarea>右下角隐藏*/
outline:none;                   /*输入框点击时边框隐藏*/
background: url() no-repeat     /*【左右】px 【上下】px;*/
text-decoration:none;           /*去掉下划线*/
cursor: pointer;                /*鼠标变成手*/
calc(100% - 500px)             /*css 宽高计算*/
/*css属性设置元素的垂直对齐方式*/
vertical-align:middle/text-bottom/text-top/bottom…… 
/*:hover可操纵该元素及其子元素,若想操作不相关两种元则要用 :hover+*/
:hover(:hover)
/*背景图片中心点与容器中心点一致*/
background-position: center center;
background-repeat: no-repeat;
background-size: cover; 
/*弹性布局*/
flex-wrap: wrap;  /*自动换行*/  
flex:1; /*自动填满剩余空间*/
flex:0 0 auto;  /*有剩余空间不放大,空间不足时不缩小,长度等于灵活项目的长度*/
flex:none; /*同上*/

设置宽高比

width:100%;
height:0;
overflow:hidden;
padding-bottom:31.25%;

或者(可能存在兼容性)

width:100%;
height:31.25vw;

垂直居中

方式一(flex布局,父元素宽高不定,推荐):

.father{  /*写在父元素上,子元素会居中*/
    display: -webkit-flex; 
    display: flex;                      /*定位(写在父元素中)*/
    justify-content:center;           /*水平居中*/
    align-items:center;             /*垂直居中 */
}
// 因为flex 布局默认是水平方向,因此,换一种思路,得到另一种方法
.father{
  flex-direction : column;  /* 修改Y 为主轴方向 */
  align-items:center;               
}

方式二(绝对定位,父元素宽高不定,推荐):

.father{
    position: relative;
}
.child{
    position: absolute;
    left:50%;   /*控制水平位置*/
    top:50%;  /*控制垂直位置*/
    transform: translate(-50%,-50%);  /*第一参数水平,第二个垂直*/
}

方式三(绝对定位,父元素宽高不定,推荐):

.father{
    position: relative;
}
.child{
    position:absolute;
    /* 垂直 */
    top: 0;
    bottom: 0;
    /* 水平 */
    left:0;
    right: 0;
    margin: auto;
}

方式四(table-cell,父元素宽高不定):

.father{  /*写在父元素上,子元素会居中*/
    display: table-cell;
    vertical-align: middle;
}

其他(父元素宽高已知):

  • 绝对定位,通过设置 margin 控制子元素在父元素中的位置。
  • 绝对定位,通过设置 lefttop 控制子元素在父元素中的位置。

文字溢出

单行文本溢出显示省略号

overflow: hidden;              /*把超出的内容进行隐藏*/
white-space: nowrap;          /*设置内容不换行*/
text-overflow: ellipsis;     /*设置超出内容为省略号*/

多行文本溢出显示省略号

overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3;     /*设置行数*/
-webkit-box-orient: vertical;

/*增强版(如果上边的不起作用,可以尝试下边这个)*/
 overflow: hidden;
 text-overflow: ellipsis;
 display: -webkit-box;
 -webkit-line-clamp: 2;
 -webkit-box-orient: vertical;
 word-break: break-all;

文字超出换行

 /*常用,写一个就可以*/
word-break:break-all;    
word-wrap:break-word;
/*pre 标签 超出换行*/
 white-space: pre-wrap; /*css-3*/
 white-space: -moz-pre-wrap; /*Mozilla,since1999*/
 white-space: -pre-wrap; /*Opera4-6*/
 white-space: -o-pre-wrap; /*Opera7*/
 word-wrap: break-word; /*InternetExplorer5.5+*/

子元素均分父元素

方式一(弹性布局,推荐):

.father{
    display: flex;  
    display: -webkit-flex;
}
.child{
    flex: 1;
}

方式二:

.father{
        display: table;
        table-layout: fixed; /*Optional*/
}
.child{
        display: table-cell;
}

方式三(推荐):

适用于ul>li

    .father{
        flex-wrap: wrap; 
        display: flex;
        justify-content: space-evenly;
    }

ul 宽度超出不换行

ul 宽度由li 决定,并且不会换行(其它属性自定)

ul{
      white-space: nowrap;
}
li{
     display: inline-block;  /*用 inline-block 取代浮动属性*/
     *display:linlne;    /*兼容ie 低版本*/
     zoom: 1;   /*兼容ie 低版本*/
}

符号 <=> 代码

&lt;    //(小于号) <
&gt;    //(大于号) >
&amp;   //(单与) &
&quot;  //(双引号,英文)"
&reg;   //(注册商标,中国) ®  
&copy;  //(版权)©
&trade; //(注册商标,国际通用)™
&nbsp;  //小空白
&ensp;  //中空白
&emsp;  //大空白
空白大小对比

三角制作方法(利用边框的宽度去实现)

border-top: 50px solid transparent;
border-bottom: 50px solid transparent;
border-right: 50px solid red;/*箭头背景颜色,使其颜色与整体颜色一致*/
border-left: 50px solid transparent;  

说明:transparent—>透明色
画三角的时候,省略对边(画左三角,不用写右边);
边宽即为三角宽
外层div不要设置高(设置就设成0,或等边宽)
宽最好设成0

checkbox选中样式修改

input[type="checkbox"]{
    width:15px;
    height:15px;
    border-radius: 5px;
    display: inline-block;
    text-align: center;
    vertical-align: middle; 
    line-height: 18px;
    position: relative;
}
input[type="checkbox"]::before{
    content: "";
    position: absolute;
    top: -2px;
    left: 0;
    background: #fff;
    width: 100%;
    height: 100%;
    border: 1px solid #ddd;
}
input[type="checkbox"]:checked::before{
    content: "\2713";
    background-color: #3498DB;
    position: absolute;
    top: -2px;
    left: 0;width:100%;
    border: 1px solid #3498DB;
    color:#fff;
    font-size: 14px;
    font-weight: bold;
}

其它

accept="image/*"                     //input只能上传图片
accept="image/gif, image/jpeg"      //限制图片类型
placeholder="输入你想说的话"         //提示文字
字符串.split("字符[串]")            //把字符串切割成数组
$(window).resize(function() { }); //窗口大小改变
$('#content_box').load('/mana/weekly/write_admin.html');    //引入html页面
<input type="datetime-local">    //input-->data兼容性替换
window.location.reload();       //刷新页面
blur                           //失去焦点事件

回车执行

$(document).keyup(function(event){
    if(event.keyCode ==13){
        $("#login").trigger("click");
    }
});

控制台相同内容的不同输出

光看标题有些搞不明白在说什么,但这样的情况却很常见

两个对象内容其实是一样的.png

如上图,第一个对象是数组中的某一个值,通过push添加,而第二个对象则是直接定义,内容上是一样的,在控制台输出却不一样。
对象内容展开.png

在方法调用时,作为变量传入,第一个对象是无法参与执行的。如果想让它参与执行要怎么做呢?如下:

let log = JSON.parse(JSON.stringify(obj));  //重点是这一行
console.log(log);  //这样两个就一样咯

获取url参数

方法1:

//方法封装
function GetRequest() { 
    //获取url中"?"符后的字串 
    var url = location.search; 
    var theRequest = new Object(); 
    if (url.indexOf("?") != -1) { 
          var str = url.substr(1); 
          strs = str.split("&"); 
          for(var i = 0; i < strs.length; i ++) { 
        theRequest[strs[i].split("=")[0]]=decodeURI(strs[i].split("=")[1]); 
          } 
    } 
    return theRequest; 
} 
// 方法调用
var Request = new Object(); 
Request = GetRequest(); 
var urlCan = Request['参数名'];   

方法2:

function getUrlParam(key) {
    // 获取参数
    var url = window.location.search;
    // 正则筛选地址栏
    var reg = new RegExp("(^|&)" + key + "=([^&]*)(&|$)");
    // 匹配目标参数
    var result = url.substr(1).match(reg);
    //返回参数值
    return result ? decodeURIComponent(result[2]) : null;
}
//调用
getUrlParam("参数名");

双层ul展开

function liLa_title(e){
    if($(e).find("ul").css("display")=="none"){
        $(e).find("ul").slideUp("slow");
        $(e).find("ul").slideDown("slow");
    }else{
        $(e).find("ul").slideUp("slow");
        $(e).find("ul").find("ul").slideUp("slow");
    }
}

文字颜色渐变

p{
    /*渐变背景*/
    background-image: -webkit-linear-gradient(
        left, 
        #3498db, 
        #f47920 10%, 
        #d71345 20%, 
        #f7acbc 30%,
        #ffd400 40%, 
        #3498db 50%, 
        #f47920 60%, 
        #d71345 70%, 
        #f7acbc 80%, 
        #ffd400 90%, 
        #3498db
    );
    /*文字填充色为透明*/
    color: transparent; 
    -webkit-text-fill-color: transparent;
     /*背景剪裁为文字,只将文字显示为背景*/
    -webkit-background-clip: text;         
    /*背景图片向水平方向扩大一倍,这样background-position才有移动与变化的空间*/
    background-size: 200% 100%;            
    /* 动画调用*/
    animation: masked-animation 4s infinite linear;
}
/*动画*/
@keyframes masked-animation {
    0% {
        /*background-position 属性设置背景图像的起始位置。*/
        background-position: 0 0;   
    }
    100% {
        background-position: -100% 0;
    }
}

点击定位(滚动条滚动)

function scrollToLocation() {
    var mainContainer = $('#thisMainPanel'),
    //滚动到<div id="thisMainPanel">中类名为son-panel的最后一个div处
    scrollToContainer = mainContainer.find('.son-panel:last');
    //滚动到<div id="thisMainPanel">中类名为son-panel的第六个处
    scrollToContainer = mainContainer.find('.son-panel:eq(5)');
    //非动画效果
    mainContainer.scrollTop(
     scrollToContainer.offset().top - mainContainer.offset().top + mainContainer.scrollTop()
    );
    //动画效果
    mainContainer.animate({
        scrollTop: scrollToContainer.offset().top - mainContainer.offset().top + mainContainer.scrollTop()
    }, 2000);//2秒滑动到指定位置
}

JQ事件绑定

// 拿到所有的a标签,全部绑定事件,并且自动解决浏览器兼容问题
$("a").on("click", removerItem);
// 解除绑定事件
$("a").off()
// 拿到按钮标签
$("#id").on("click", addItem)
//例
$("#cut_right").on("click",function (){})

注意:jqery绑定事件的时候 $(this)代表当前的标签,通过$(this)就可以实现给多个标签绑定相同事件,达到可以操作当前点击的标签;如果不使用jQuery,原生js需要使用this.getArrribute('ga')可以获得当前点击的标签的ga属性的值

JQ动画

$("div").animate({left:'250px'});

input日期修改

::-webkit-datetime-edit // 控制编辑区域的
::-webkit-datetime-edit-fields-wrapper // 控制年月日这个区域的
::-webkit-datetime-edit-text // 这是控制年月日之间的斜线或短横线的
::-webkit-datetime-edit-month-field // 控制月份
::-webkit-datetime-edit-day-field // 控制具体日子
::-webkit-datetime-edit-year-field // 控制年文字, 如2017四个字母占据的那片地方
::-webkit-inner-spin-button // 这是控制上下小箭头的
::-webkit-calendar-picker-indicator // 这是控制下拉小箭头的
::-webkit-clear-button //这是控制清除按钮的

兼容性写法

-webkit-         /* Safari 和 Chrome */
-moz-       /* Firefox */
-o-     /* Opera */

ps:前端小技巧持续更新中,有兴趣的小伙伴可以点下关注呦,我们一起学前端~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容