js網頁布局算法,JavaScript網頁設計

本文目錄一覽:

js 常見數據結構和算法(待更新)

比較相鄰的元素,如果前一個比後一個大,交換之。

第一趟排序第1個和第2個一對,比較與交換,隨後第2個和第3個一對比較交換,這樣直到倒數第2個和最後1個,將最大的數移動到最後一位。

第二趟將第二大的數移動至倒數第二位

……

因此需要n-1趟;

選擇排序,從頭至尾掃描序列,找出最小的一個元素,和第一個元素交換,接着從剩下的元素中繼續這種選擇和交換方式,最終得到一個有序序列

鏈表:存貯有序元素的集合,

但是不同於數組,每個元素是一個存貯元素本身的節點和指向下一個元素引用組成

要想訪問鏈表中間的元素,需要從起點開始遍歷找到所需元素

類似對象,以key,value存貯值

特點:每個節點最多有兩個子樹的樹結構

如何用JS控制網頁字體大小,使其能夠自適應屏幕大小

1.首先,在網頁代碼的頭部,加入一行viewport元標籤。

viewport是網頁默認的寬度和高度,上面這行代碼的意思是,網頁寬度默認等於屏幕寬度(width=device-width),原始縮放比例(initial-scale=1)為1.0,即網頁初始大小占屏幕面積的100%。

所有主流瀏覽器都支持這個設置,包括IE9,對於那些老式瀏覽器(主要是IE6、7、8),需要使用css3-mediaqueries.js。

2、不使用絕對寬度由於網頁會根據屏幕寬度調整布局,所以不能使用絕對寬度的布局,也不能使用具有絕對寬度的元素。這一條非常重要。具體說,CSS代碼不能指定像素寬度:width:xxx px;

只能指定百分比寬度:width: xx%;或者width:auto;

3、相對大小的字體

字體也不能使用絕對大小(px),而只能使用相對大小(em)。

body {

font: normal 100% Helvetica, Arial, sans-serif;

}

上面的代碼指定,字體大小是頁面默認大小的100%,即16像素。

h1 {

font-size: 1.5em;

}

然後,h1的大小是默認大小的1.5倍,即24像素(24/16=1.5)。

small {

font-size: 0.875em;

}

small元素的大小是默認大小的0.875倍,即14像素(14/16=0.875)。

快來看JS的的幾個常用算法(持續更新中)

數組去重

// 第一種方法

let arr = [1,1,2,3,4];

function fun(v) {

return Array.from(new Set(v))

}

console.log(fun(arr)) //[1,2,3,4]

// 第二種方法

let qc= […new Set(arr)]

console.log(qc) //[1,2,3,4]

數組並集

let arr0 = [‘a’,’b’,’c’];

let arr2 = [‘c’,’d’];

let a=new Set(arr0);

let b=new Set(arr2);

let bj = new Set([…a,…b]);

console.log(bj);//{“a”, “b”, “c”, “d”}

數組交集

let jj = new Set([…a].filter(x=b.includes(x)));

console.log(jj);//{“c”}

數組差集

let cj = new Set([…a].filter(x=!b.includes(x)));

console.log(cj);//{“a”, “b”}

統計數組相同項的個數

let arr6=[‘a’,’a’,’a’,’b’,’c’,’c’];

let arr6obj=arr6.reduce(function(obj,name){

obj[name]=obj[name]?++obj[name]:1;

return obj;

},{})

console.log(arr6obj)// {a: 3, b: 1, c: 2}

數組方法reduce()實現filter、map

let arr7=[2,3,10];

const arro=arr7.reduce(function(list,num){

num=num*2;

if(num=20){

list.push(num)

}

return list;

},[])

console.log(arro);//[20]

字符串轉換為數字

let num1=’1′ * 1;

console.log(typeof num1) //number

使用Boolean過濾數組中的所有假值

let jz=[0,null,false,NaN,1,2];

const filter1=arr1=arr1.filter(Boolean);

console.log(filter1(jz)) //[1,2]

取整

let num2=1.223;

console.log(num2|0);//1

判斷奇偶

let num3=3;

console.log(!!(num3 1));//true

精確到指定位數(取小數第一位)

let num4=6.222;

console.log(num4.toFixed(1));//6.2

解構

let [rr,aa]=[1,2];

console.log(rr);//1

使用解構交換數值

[rr,aa]=[aa,rr];

console.log(rr);//2

。。。。。。。。。。。。。

作者:Vam的金豆之路

篇幅有限更多請見擴展鏈接:

js實現網頁 高度和寬度成比例的代碼

網頁可見區域寬:document.body.clientWidth

網頁可見區域高:document.body.clientHeight

網頁可見區域寬:document.body.offsetWidth (包括邊線的寬)

網頁可見區域高:document.body.offsetHeight (包括邊線的寬)

網頁正文全文寬:document.body.scrollWidth

網頁正文全文高:document.body.scrollHeight

網頁被捲去的高:document.body.scrollTop

網頁被捲去的左:document.body.scrollLeft

網頁正文部分上:window.screenTop

網頁正文部分左:window.screenLeft

屏幕分辨率的高:window.screen.height

屏幕分辨率的寬:window.screen.width

屏幕可用工作區高度:window.screen.availHeight

屏幕可用工作區寬度:window.screen.availWidth

HTML精確定位:scrollLeft,scrollWidth,clientWidth,offsetWidth

scrollHeight: 獲取對象的滾動高度。

scrollLeft:設置或獲取位於對象左邊界和窗口中目前可見內容的最左端之間的距離

scrollTop:設置或獲取位於對象最頂端和窗口中可見內容的最頂端之間的距離

scrollWidth:獲取對象的滾動寬度

offsetHeight:獲取對象相對於版面或由父坐標 offsetParent 屬性指定的父坐標的高度

offsetLeft:獲取對象相對於版面或由 offsetParent 屬性指定的父坐標的計算左側位置

offsetTop:獲取對象相對於版面或由 offsetTop 屬性指定的父坐標的計算頂端位置

event.clientX 相對文檔的水平座標

event.clientY 相對文檔的垂直座標

event.offsetX 相對容器的水平坐標

event.offsetY 相對容器的垂直坐標

document.documentElement.scrollTop 垂直方向滾動的值

event.clientX+document.documentElement.scrollTop 相對文檔的水平座標+垂直方向滾動的量

IE,FireFox 差異如下:

IE6.0、FF1.06+:

clientWidth = width + padding

clientHeight = height + padding

offsetWidth = width + padding + border

offsetHeight = height + padding + border

IE5.0/5.5:

clientWidth = width – border

clientHeight = height – border

offsetWidth = width

offsetHeight = height

(需要提一下:CSS中的margin屬性,與clientWidth、offsetWidth、clientHeight、offsetHeight均無關)

網頁可見區域寬: document.body.clientWidth

網頁可見區域高: document.body.clientHeight

網頁可見區域寬: document.body.offsetWidth (包括邊線的寬)

網頁可見區域高: document.body.offsetHeight (包括邊線的高)

網頁正文全文寬: document.body.scrollWidth

網頁正文全文高: document.body.scrollHeight

網頁被捲去的高: document.body.scrollTop

網頁被捲去的左: document.body.scrollLeft

網頁正文部分上: window.screenTop

網頁正文部分左: window.screenLeft

屏幕分辨率的高: window.screen.height

屏幕分辨率的寬: window.screen.width

屏幕可用工作區高度: window.screen.availHeight

屏幕可用工作區寬度: window.screen.availWidth

-------------------

技術要點

本節代碼主要使用了Document對象關於窗口的一些屬性,這些屬性的主要功能和用法如下。

要得到窗口的尺寸,對於不同的瀏覽器,需要使用不同的屬性和方法:若要檢測窗口的真實尺寸,在Netscape下需要使用Window的屬性;在

IE下需要 深入Document內部對body進行檢測;在DOM環境下,若要得到窗口的尺寸,需要注意根元素的尺寸,而不是元素。

Window對象的innerWidth屬性包含當前窗口的內部寬度。Window對象的innerHeight屬性包含當前窗口的內部高度。

Document對象的body屬性對應HTML文檔的標籤。Document對象的documentElement屬性則表示HTML文檔的根節點。

document.body.clientHeight表示HTML文檔所在窗口的當前高度。document.body. clientWidth表示HTML文檔所在窗口的當前寬度。

實現代碼

複製代碼 代碼如下:

!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”

“”

html xmlns=””

head

title請調整瀏覽器窗口/title

meta http-equiv=”content-type” content=”text/html; charset=gb2312″

/head

body

h2 align=”center”請調整瀏覽器窗口大小/h2hr

form action=”#” method=”get” name=”form1″ id=”form1″

!–顯示瀏覽器窗口的實際尺寸–

瀏覽器窗口 的 實際高度: input type=”text” name=”availHeight” size=”4″br

瀏覽器窗口 的 實際寬度: input type=”text” name=”availWidth” size=”4″br

/form

script type=”text/javascript”

!–

var winWidth = 0;

var winHeight = 0;

function findDimensions() //函數:獲取尺寸

{

//獲取窗口寬度

if (window.innerWidth)

winWidth = window.innerWidth;

else if ((document.body) (document.body.clientWidth))

winWidth = document.body.clientWidth;

//獲取窗口高度

if (window.innerHeight)

winHeight = window.innerHeight;

else if ((document.body) (document.body.clientHeight))

winHeight = document.body.clientHeight;

//通過深入Document內部對body進行檢測,獲取窗口大小

if (document.documentElement document.documentElement.clientHeight document.documentElement.clientWidth)

{

winHeight = document.documentElement.clientHeight;

winWidth = document.documentElement.clientWidth;

}

//結果輸出至兩個文本框

document.form1.availHeight.value= winHeight;

document.form1.availWidth.value= winWidth;

}

findDimensions();

//調用函數,獲取數值

window.onresize=findDimensions;

//–

/script

/body

/html

源程序解讀

(1)程序首先建立一個表單,包含兩個文本框,用於顯示窗口當前的寬度和高度,並且,其數值會隨窗口大小的改變而變化。

(2)在隨後的JavaScript代碼中,首先定義了兩個變量winWidth和winHeight,用於保存窗口的高度值和寬度值。

(3)然後,在函數findDimensions ( )中,使用window.innerHeight和window.innerWidth得到窗口的高度和寬度,並將二者保存在前述兩個變量中。

(4)再通過深入Document內部對body進行檢測,獲取窗口大小,並存儲在前述兩個變量中。

(5)在函數的最後,通過按名稱訪問表單元素,結果輸出至兩個文本框。

(6)在JavaScript代碼的最後,通過調用findDimensions ( )函數,完成整個操作。

WEB前端怎麼布局?

在談WEB前端怎麼布局前,我們先梳理前端的布局類型,具體有以下幾種:

1.靜態布局:不管瀏覽器尺寸具體是多少,網頁布局始終按照最初寫代碼時的布局來顯示。常規的pc的網站都是靜態(定寬度)布局的,也就是設置了min-width,這樣的話,如果小於這個寬度就會出現滾動條,如果大於這個寬度則內容居中外加背景,這種設計常見於pc端。

2.流式布局:布局特點是屏幕分辨率變化時,頁面里元素的大小會變化而但布局不變。

3.自適應布局:自適應布局的特點是分別為不同的屏幕分辨率定義布局,即創建多個靜態布局,每個靜態布局對應一個屏幕分辨率範圍。

4.響應式布局:布局特點是每個屏幕分辨率下面會有一個布局樣式,即元素位置和大小都會變。

那麼我們如何布局呢?通過以下幾點來選擇布局。

1.如果只做電腦端,最好的選擇是靜態布局。

2.如果做移動端,且設計對高度和元素間距要求不高,那麼彈性布局(rem+js)是最好的選擇,通過一份css+一份js調節font-size就搞定。

3.如果電腦端,移動端要兼容,而且要求很高,那麼響應式布局還是最好的選擇。前提是設計根據不同的高寬做不同的設計,響應式根據媒體查詢做不同的布局。

web前端javascript能實現什麼算法或者計算

在Web開發中,JavaScript很重要,算法也很重要。下面整理了一下一些常見的算法在JavaScript下的實現,包括二分法、求字符串長度、數組去重、插入排序、選擇排序、希爾排序、快速排序、冒泡法等等。僅僅是為了練手,不保證高效與美觀,或許還有Bug,有時間再完善吧。

1.二分法:

function binary(items,value){

var startIndex=0,

stopIndex=items.length-1,

midlleIndex=(startIndex+stopIndex)1;

while(items[middleIndex]!=value startIndex

if(items[middleIndex]value){

stopIndex=middleIndex-1;

}else{

startIndex=middleIndex+1;

}

middleIndex=(startIndex+stopIndex)1;

}

return items[middleIndex]!=value ? false:true;

}

2.十六進制顏色值的隨機生成:

function randomColor(){

var arrHex=[“0″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9″,”a”,”b”,”c”,”d”],

strHex=”#”,

index;

for(var i=0;i 6; i++){

index=Math.round(Math.random()*15);

strHex+=arrHex[index];

}

return strHex;

}

一個求字符串長度的方法:

function GetBytes(str){

var len=str.length,

bytes=len;

for(var i=0;i len;i++){

if(str.CharCodeAt255){

bytes++;

}

}

return bytes;

}

3.js實現數組去重:

Array.protype.delRepeat=function(){

var newArray=new Array();

var len=this.length;

for(var i=0;i len;i++){

for(var j=i+1;j len;j++)

{

if(this[i]==this[j])

{

++i;

}

}

newArray.push(this[i]);

}

return newArray;

}

4.插入排序。所謂的插入排序,就是將序列中的第一個元素看成一個有序的子序列,然後不段向後比較交換比較交換。

function insertSort(arr){

var key;

for(var j = 1; j arr.length ; j++){

//排好序的

var i = j – 1;

key = arr[j];

while(i = 0 arr[i] key){

arr[i + 1] = arr[i];

i –;

}

arr[i + 1] = key;

}

return arr;

}

5.選擇排序。其實基本的思想就是從待排序的數組中選擇最小或者最大的,放在起始位置,然後從剩下的數組中選擇最小或者最大的排在這公司數的後面。

function selectionSort(data)

{

var i, j, min, temp , count=data.length;

for(i = 0; i count – 1; i++) {

/* find the minimum */

min = i;

for (j = i+1; j count; j++)

{

if (data[j] data[min])

{ min = j;}

}

/* swap data[i] and data[min] */

temp = data[i];

data[i] = data[min];

data[min] = temp;

}

return data;

}

6.希爾排序,也稱遞減增量排序算法。其實說到底也是插入排序的變種。

function shellSort(array){

var stepArr = [1750, 701, 301, 132, 57, 23, 10, 4, 1]; //

reverse()在維基上看到這個最優的步長較小數組

var i = 0;

var stepArrLength = stepArr.length;

var len = array.length;

var len2 = parseInt(len/2);

for(;i stepArrLength; i++){

if(stepArr[i] len2){

continue;

}

stepSort(stepArr[i]);

}

// 排序一個步長

function stepSort(step){

//console.log(step) 使用的步長統計

var i = 0, j = 0, f, tem, key;

var stepLen = len%step 0 ? parseInt(len/step) + 1 : len/step;

for(;i step; i++){// 依次循環列

for(j=1;/*j stepLen */step * j + i len;

j++){//依次循環每列的每行

tem = f = step * j + i;

key = array[f];

while((tem-=step) = 0){// 依次向上查找

if(array[tem] key){

array[tem+step] = array[tem];

}else{

break;

}

}

array[tem + step ] = key;

}

}

}

return array;

}

7.快速排序。其實說到底快速排序算法就系對冒泡排序的一種改進,採用的就是算法理論中的分治遞歸的思想,說得明白點,它的做法就是:通過一趟排序將待排序的紀錄分割成兩部分,其中一部分的紀錄值比另外一部分的紀錄值要小,就可以繼續分別對這兩部分紀錄進行排序;不段的遞歸實施上面兩個操作,從而實現紀錄值的排序。

function quickSort(arr,l,r){

if(l r){

var mid=arr[parseInt((l+r)/2)],i=l-1,j=r+1;

while(true){

while(arr[++i] mid);

while(arr[–j]mid);

if(i=j)break;

var temp=arr[i];

arr[i]=arr[j];

arr[j]=temp;

}

quickSort(arr,l,i-1);

quickSort(arr,j+1,r);

}

return arr;

}

8.冒泡法:

function bullSort(array){

var temp;

for(var i=0;i array.length;i++)

{

for(var j=array.length-1;j i;j–){

if(array[j] array[j-1])

{

temp = array[j];

array[j]=array[j-1];

array[j-1]=temp;

}

}

}

return array;

}

原創文章,作者:WPNY,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/131155.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
WPNY的頭像WPNY
上一篇 2024-10-03 23:43
下一篇 2024-10-03 23:43

相關推薦

  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python實現爬樓梯算法

    本文介紹使用Python實現爬樓梯算法,該算法用於計算一個人爬n級樓梯有多少種不同的方法。 有一樓梯,小明可以一次走一步、兩步或三步。請問小明爬上第 n 級樓梯有多少種不同的爬樓梯…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • Harris角點檢測算法原理與實現

    本文將從多個方面對Harris角點檢測算法進行詳細的闡述,包括算法原理、實現步驟、代碼實現等。 一、Harris角點檢測算法原理 Harris角點檢測算法是一種經典的計算機視覺算法…

    編程 2025-04-29
  • 數據結構與算法基礎青島大學PPT解析

    本文將從多個方面對數據結構與算法基礎青島大學PPT進行詳細的闡述,包括數據類型、集合類型、排序算法、字符串匹配和動態規劃等內容。通過對這些內容的解析,讀者可以更好地了解數據結構與算…

    編程 2025-04-29
  • 瘦臉算法 Python 原理與實現

    本文將從多個方面詳細闡述瘦臉算法 Python 實現的原理和方法,包括該算法的意義、流程、代碼實現、優化等內容。 一、算法意義 隨着科技的發展,瘦臉算法已經成為了人們修圖中不可缺少…

    編程 2025-04-29
  • 神經網絡BP算法原理

    本文將從多個方面對神經網絡BP算法原理進行詳細闡述,並給出完整的代碼示例。 一、BP算法簡介 BP算法是一種常用的神經網絡訓練算法,其全稱為反向傳播算法。BP算法的基本思想是通過正…

    編程 2025-04-29
  • 粒子群算法Python的介紹和實現

    本文將介紹粒子群算法的原理和Python實現方法,將從以下幾個方面進行詳細闡述。 一、粒子群算法的原理 粒子群算法(Particle Swarm Optimization, PSO…

    編程 2025-04-29
  • python爬取網頁並生成表格

    本文將從以下幾個方面詳細介紹如何使用Python爬取網頁數據並生成表格: 一、獲取網頁數據 獲取網頁數據的一般思路是通過HTTP請求獲取網頁內容,最常用的方式是使用Python庫r…

    編程 2025-04-28
  • Python回歸算法算例

    本文將從以下幾個方面對Python回歸算法算例進行詳細闡述。 一、回歸算法簡介 回歸算法是數據分析中的一種重要方法,主要用於預測未來或進行趨勢分析,通過對歷史數據的學習和分析,建立…

    編程 2025-04-28

發表回復

登錄後才能評論