2018-01-01

1.列舉不同的清除浮動的技巧

/* 1.添加新元素 */
<div class="outer">
  <div class="div1"></div>
  <div class="div2"></div>
  <div class="div3"></div>
  <div class="clearfix"></div>
</div>
.clearfix {
  clear: both;
}

/* 2.為父元素增加樣式 */
.clearfix {
  overflow: auto;
  zoom: 1; // 處理兼容性
}

/* 3.:after 偽元素方法 (作用于父元素) */
.outer {
  zoom: 1;
  &:after {
    display: block;
    height: 0;
    clear: both;
    content: '.';
    visibillity: hidden;
  }
}

2.移動端一像素邊框問題

/* 定義 */
@mixin border-1px ($color) {
    position: relative;
    &:after {
        display: block;
        position: absolute;
        left: 0;
        bottom: 0;
        width: 100%;
        border-top: 1px solid $color;
        context: '';
    }
}

@media (-webkit-min-device-pixel-radio: 1.5), (min-device-pixel-radio: 1.5) {
    border-1px {
        &:after {
            -webkit-transform: scaleY(0.7);
            transform: scaleY(0.7);
        }
    }
}

@media (-webkit-min-device-pixel-radio: 2), (min-device-pixel-radio: 2) {
    border-1px {
        &:after {
            -webkit-transform: scaleY(0.5);
            transform: scaleY(0.5);
        }
    }
}

/* 使用方式 */
@inclue border-1px(rgba(7, 17, 27, .1));

3.左定寬右自適應(yīng)寬度戏羽,并且等高布局(最小高度200px)

/* HTML */
<div class="container">
  <div class="left">Left silder</div>
  <div class="content">Main content</div>
</div>

/* CSS */
.container {
  overflow: hidden;
}

.left {
  float: left;
  width: 200px;
  margin-bottom: -9999px;
  padding-bottom: 9999px;
  background-color: #eee;
}

.content {
  margin-left: 200px;
  margin-bottom: -9999px;
  padding-bottom: 9999px;
  background-color: #ccc;
}

.left, .content {
  min-height: 200px;
  height: auto !important;
}
4.location.replace()與location.assign()區(qū)別
location.replace()的url不會出現(xiàn)在history中
5.DOM 操作
// 創(chuàng)建節(jié)點
createDocumentFragment()
createElement()
createTextNode()

// 添加 移除 替換 插入
appendChild()
removeChild()
replaceChild()
insertBefore()

// 查找
getElementsByTagName()
getElementsByName()
getElementsByClassName()
getElementById()
querySelector()
querySelectorAll()
6.JS設(shè)置css樣式的幾種方式
/* 1.直接設(shè)置style屬性 */
element.style.height = '100px';

/* 2.直接設(shè)置屬性 */
element.setAttribute('height', '100px');

/* 3.使用setAttribute設(shè)置style屬性 */
element.setAttribute('style', 'height: 100px !important');

/* 4.使用setProperty設(shè)置屬性秸苗,通過第三個參數(shù)設(shè)置important */
element.style.setProperty('height', '300px', 'important');

/* 5.設(shè)置cssText */
element.style.cssText += 'height: 100px !important';
7.阻止默認(rèn)行為
function stopDefault( e ) {
    // 阻止默認(rèn)瀏覽器動作(W3C)
    if ( e && e.preventDefault ) {
        e.preventDefault();
    } else {
        // IE中阻止函數(shù)器默認(rèn)動作的方式
        window.event.returnValue = false;
    }
    return false;
}
8.復(fù)制的js題
function Foo() {
    getName = function () { alert(1); }
    return this;
}
Foo.getName = function () { alert(2); }
Foo.prototype.getName = function () { alert(3); }
var getName = function () { alert(4); }
function getName () { alert(5); }

/* 寫出輸出 */
Foo.getName(); //2
getName(); //4
Foo().getName(); // 1
getName(); //1
new Foo.getName(); // 2
new Foo().getName(); // 3
new new Foo().getName(); //3
9.JS數(shù)組深淺拷貝
//淺拷貝
var new_arr = arr.slice();
var new_arr = arr.concat();
// 推薦 淺拷貝
var shallowCopy = function (obj) {
    // 判斷是否是數(shù)組或者對象
    if (typeof obj !== 'object') {
        return
    }
    var newObj = obj instanceof Array ? [] : {};
    for (var key in obj) {
        if (obj.hasOwnProperty(key)) {
            newObj[key] = obj[key];
        }
    }
    return newObj;
}
//深拷貝
var deepCopy = function (obj) {
    if (typeof obj !== 'object') {
        return
    }
    var newObj = obj instanceof Array ? [] : {};
    for (var key in obj) {
        if (obj.hasOwnProperty(key)) {
            newObj[key] = typeof obj[key] === 'object' ? deepCopy(obj[key]) : obj[key];
        }
    }
    return newObj
}
10.數(shù)組去重
//filter + indexOf
function unique1 (arr) {
    var res = arr.filter(function (item, index, array) {
        return array.indexOf(item) === index;
    })
    return res;
}
///filter + sort
function unique2 (arr) {
    return arr.concat().sort().filter(function (item, index, array) {
        return !index || item !== array[index - 1];
    })
}
//es6
function uniqu3 (arr) {
    return [... new Set(arr)];
}
11.找出數(shù)組中的最大值
//reduce
var arr = [6, 4, 1, 8, 2, 11, 3];
function max (prev, next) {
    return Math.max(prev, next)
}
console.log(arr.reduce(max));
//apply
console.log(Math.max.apply(null, arr));
//ES6
function max (arr) {
    return Math.max(...arr);
}
console.log(max(arr));
12.數(shù)組扁平化
var arr = [1, [2, [3, 4]]];
function flatten(arr) {
    while (arr.some(item => Array.isArray(item))) {
        arr = [].concat(...arr);
    }
    return arr;
}
console.log(flatten(arr))
13.數(shù)字格式化 1234567890 -> 1,234,567,890
const priceSubstr = (num = '0', gap = ',') => {
  return num.toString().replace(/(\d)(?=(?:\d{3})+$)/g, `$1${gap}`)
}
14.打亂數(shù)組的方法
var arr = [1,2,3,4,5,6]
arr.sort(function () {
    return 0.5 - Math.random();
})
15.柯里化
function add () {
    let sum = 0;
    Array.prototype.forEach.call(arguments, function (item, index){
        if (typeof item !== 'number') {
            return false;
        } else {
            sum += item;
        }
    })
    var tmp = function () {
        Array.prototype.forEach.call(arguments, function (item, index){
            if (typeof item !== 'number') {
                return false;
            } else {
               sum += item;
            }
        })
        return tmp;
    }
    tmp.toString = function () {
        return sum
    }
    return tmp;
}
add(1, 2); // 3
add(1)(2); // 3
add(1, 2, 3)(1, 4)(2, 2)(1) // 16
16.簡單的字符串模板
var TemplateEngine = function(tpl, data) {
    var re = /(?:\{)(\w*)(?:\})/g, match;
    while(match = re.exec(tpl)) {
        tpl = tpl.replace(match[0], data[match[1]])
    }
    return tpl;
}

var template = '<p>Hello, my name is {name}. I\'m {age} years old.</p>';
console.log(TemplateEngine(template, {
    name: "Yeaseon",
    age: 24
}));
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末博投,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌哼审,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗤谚,死亡現(xiàn)場離奇詭異棺蛛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)巩步,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門旁赊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人椅野,你說我怎么就攤上這事终畅。” “怎么了竟闪?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵离福,是天一觀的道長。 經(jīng)常有香客問我炼蛤,道長妖爷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任理朋,我火速辦了婚禮絮识,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嗽上。我一直安慰自己次舌,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布兽愤。 她就那樣靜靜地躺著彼念,像睡著了一般。 火紅的嫁衣襯著肌膚如雪浅萧。 梳的紋絲不亂的頭發(fā)上逐沙,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機(jī)與錄音洼畅,去河邊找鬼酱吝。 笑死,一個胖子當(dāng)著我的面吹牛土思,可吹牛的內(nèi)容都是我干的务热。 我是一名探鬼主播忆嗜,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼崎岂!你這毒婦竟也來了捆毫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤冲甘,失蹤者是張志新(化名)和其女友劉穎绩卤,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體江醇,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡濒憋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了陶夜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凛驮。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖条辟,靈堂內(nèi)的尸體忽然破棺而出黔夭,到底是詐尸還是另有隱情,我是刑警寧澤羽嫡,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布本姥,位于F島的核電站,受9級特大地震影響杭棵,放射性物質(zhì)發(fā)生泄漏婚惫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一魂爪、第九天 我趴在偏房一處隱蔽的房頂上張望先舷。 院中可真熱鬧,春花似錦甫窟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至街图,卻和暖如春浇衬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背餐济。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工耘擂, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人絮姆。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓醉冤,卻偏偏與公主長得像秩霍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蚁阳,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容

  • oncontextmune事件 當(dāng)用戶在某元素上點擊鼠標(biāo)右鍵時觸發(fā)此事件铃绒。 如何獲取鼠標(biāo)位置 當(dāng)用戶點擊某元素,并...
    加加大叔閱讀 164評論 0 0
  • CSS中將每一個元素都設(shè)置為了一個矩形的盒子螺捐,便于方便的頁面布局颠悬。 盒子的組成部分 內(nèi)容區(qū),內(nèi)邊距定血,邊框赔癌,外邊距。...
    胸懷大海的小魚缸閱讀 207評論 0 0
  • 2018的頭一天依然用自己慣用的日記形式做標(biāo)題澜沟,依然是隨手記灾票。 早上被昨晚吃下的油膩的火鍋催著起來上了個廁所,再躺...
    坐看云起的狒狒閱讀 169評論 0 4
  • VTR CAD 流程 Odin II將Verilog硬件描述語言轉(zhuǎn)換為代表異構(gòu)塊的邏輯門和黑盒組成的扁平網(wǎng)表倔喂。 A...
    ATPX_39a2閱讀 293評論 0 0
  • 胡某是云南昆明一家做農(nóng)產(chǎn)品批發(fā)公司的老板铝条,在當(dāng)?shù)匾菜闶呛蘸沼忻娜宋锪耍Y產(chǎn)早已過千萬席噩,在當(dāng)?shù)刂糜?處房產(chǎn)班缰,家中育...
    胡燕紅閱讀 677評論 0 1