html 以下:css
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Move and Copy Lab Page - jQuery in Action, 3rd edition</title> <link rel="stylesheet" href="../css/main.css"/> <style> #source-pane img { margin-bottom: 1em; } .target { border: 1px solid maroon; background-color: #ffffcc; margin-bottom: 1em; } #controls div { margin-bottom: 0.5em; } button { margin-top: 10px; } #button-restore { display: none; } .done input[type=checkbox], .done #button-execute { display: none; } #button-restore { display: inline; } </style> </head> <body> <h1 class="header">jQuery Move and Copy Lab Page</h1> <div id="source-pane" class="box-small"> <h2>Sources</h2> <div> <input type="checkbox" name="sources"/><br /> <img src="images/source1.png" alt="source 1" /> </div> <div> <input type="checkbox" name="sources"/><br /> <img src="images/source2.png" alt="source 2" /> </div> <div> <input type="checkbox" name="sources"/><br /> <img src="images/source3.png" alt="source 3" /> </div> </div> <div class="box-small"> <h2>Target Areas</h2> <div> <div id="target-pane"> <div id="target1" class="target"> <label><input type="checkbox" name="targets"/> Target 1</label> </div> <div id="target2" class="target"> <label><input type="checkbox" name="targets"/> Target 2</label> </div> <div id="target3" class="target"> <label><input type="checkbox" name="targets"/> Target 3</label> </div> <div> <span>Operation:</span><br /> <label><input type="radio" name="operations" value="append" checked="checked"/> append</label> <label><input type="radio" name="operations" value="prepend"/> prepend</label> <label><input type="radio" name="operations" value="before"/> before</label> <label><input type="radio" name="operations" value="after"/> after</label> </div> <div> <span>Clone?:</span><br /> <label><input type="radio" name="clone" value="no" checked="checked"/> no</label> <label><input type="radio" name="clone" value="yes"/> yes</label> </div> </div> <div> <button id="button-execute">Execute</button> <button id="button-restore">Restore</button> <button id="button-toggle">Toggle</button> </div> </div> </div> <div class="footer"> <p> jQuery Selectors Lab Page - jQuery in Action, 3rd edition<br/> Code by Bear Bibeault, Yehuda Katz, and Aurelio De Rosa </p> </div> <script src="../js/jquery-3.2.1.js"></script> <script src="js/changeStyle.js"></script> </body> </html>
修改元素的樣式html
/* 樣式名的值是以空格分割多個值de字符串形式出現,而不是以 COM 屬性數組的形式,這給處理帶來了複雜性。 HTML5 引入了一個好的解決辦法,經過稱爲 classList (樣式列表)的 API 實現。 */ /* 原生 js 使用 classList 增長樣式(兼容新的瀏覽器,IE 10以上,包括 IE 10。 */ var elements = document.getElementsByClassName('box-small'); for(var i = 0; i < elements.length; i++){ elements[i].classList.add('target'); } /* addClass(names) 爲集合中的元素添加指定的樣式名,兼容從 IE6 開始的瀏覽器 name(String|Function):空格分割的多個樣式名字符串;若是是函數,調用函數的上下文是當前元素(this), 參數是元素索引和元素當前樣式值(全部用到的樣式名,用空格分割) */ $('img').addClass(function(index, styleValue){ console.log(this); console.log(styleValue); //元素當前樣式值(全部用到的樣式名,用空格分割) return 'target'; //返回值做爲樣式名 }); $('.box-small').addClass(function(index, styleValue){ console.log(this); console.log(styleValue); return 'target'; }); /* removeClass(names) 從 jQuery 集合中刪除每一個元素指定的樣式;若是是函數,調用函數的上下文是當前元素(this),參數是元素索引和要刪除的 樣式名(能夠是以空格分割的樣式名),返回值是要刪除的樣式名 names(String|Function) */ $('#target-pane > div').removeClass('target'); console.log('刪除 .box-small 中的樣式:') $('.box-small').removeClass(function(index, styleName){ console.log($(this)); console.log(styleName); return 'box-small target'; }); /* toggleClass([names][, switch]) 爲沒有樣式的元素指定添加指定的樣式名,或者刪除已經存在的樣式 names(String|Function) switch(Boolean) 若是設置 switch 參數,當 switch 爲 true 時,那麼樣式一般會添加樣式到沒有此樣式的元素上,若是爲false,從元素中刪除該樣式 若是無參調用,集合中全部樣式都會刪除或恢復 若是隻設置 switch 參數,集合中每一個元素的樣式名將根據 switch 的值保留會刪除 若是提供了函數,則返回值爲樣式名,參數接受兩個值:元素索引和元素樣式的值 */ var switchValue = true; $('#target-pane').addClass('target'); console.log('id 爲 target-pane 的 div 是否包含 target 樣式:' + $('#target-pane').hasClass('target')); $('#button-toggle').click(function(){ $('img').toggleClass('target'); switchValue = !switchValue; console.log(switchValue); $('#target-pane').toggleClass('target', switchValue); /* hasClass(name) 肯定集合中的元素是否包含指定的樣式 */ console.log('id 爲 target-pane 的 div 是否包含 target 樣式:' + $('#target-pane').hasClass('target')); }); /* 直接在元素上添加樣式代碼(DOM 元素的 style 屬性),能夠覆蓋預約的樣式(設置了 !important 的除外) */ /* css(name, value):CSS 屬性的名稱。接受兩種 CSS 和 DOM 的屬性(如 background-color 與 backgroundColor),通常使用第一種 css(properties) 爲每一個元素的 CSS 樣式設置指定的 value name(String) value(String|Number|Function):若是是數字,轉換爲字符串在末尾加上「px」;若是是函數,接受兩個參數:元素索引和當前值,返回值 爲 CSS的新值 */ /* 給按鈕增長 20px 寬度(若是設置長度和寬度沒有指定單位,那麼默認就是 px) */ $('#button-toggle').css('width', '+=20'); $('p').css({ margin: '1em', color: '#1933FF', opacity: 0.8 }); $('button').css({ margin: '1em', color: '#1933FF', opacity: function(index, currentValue){ return 1 - ((index % 10 + 3) / 10); } }); /* css(name) 根據指定的 name 查詢集合中首個元素的 CSS 屬性的計算值 name(String|Array) 返回值爲字符串或屬性-值對 */ var styles = $('#source-pane').css(['border', 'background-color']); for(var property in styles){ console.log(property + ': ' + styles[property]); } /* 對於常常訪問的一些小的 css 集合,jQuery 提供了便捷的方法來訪問它們並返回值爲常見的數據類型 */ /* width(value) height(value) 設置集合中每一個匹配元素的寬度和高度 value(Number|String|Function): */ /* width() height() 查詢 jQuery 對象的第一個元素的寬度和高度,單位爲像素 */ var tmpWidth = $('#source-pane').width(); console.log('#source-pane 的寬度爲:' + tmpWidth); /* offset() 返回集合中第一個元素相對於文檔的座標,該對象(非 jQuery 對象)包含 left 和 top 屬性,以像素爲單位 */ console.log($('#button-toggle').offset()); /* offset(coordinates) 設置集合中全部元素相對於文檔的當前座標,以像素爲單位 coordinates(Object|Function):包含 left 和 top 的對象 */ setTimeout(function(){ $('#button-toggle').offset({ left: 0, top: 0 }) }, 1000); /* position() 返回匹配集合元素中第一個元素的相對於父元素的位置(像素) */ console.log($('#button-toggle').position()); /* 注:offset() 和 position 只能用在可見元素上 */ /* scrollLeft() scrollLeft(value) scrollTop() scrollTop(value) */ $('#button-restore').click(function(){ console.log('document 滾動條的水平位置爲:' + $(document).scrollLeft()); console.log('document 滾動條的垂直位置爲:' + $(document).scrollTop()); //重回文檔頂部 setTimeout(function(){ $(document).scrollTop(0); }, 1000); });
設置元素內容jquery