为什么我在学习HTMLCSS的时候很快就能上手,可是JS我已经接触了2个月了,还是无从下手?
回复内容:
我想,学习编程语言与学习说话是类似的,都有三要素:词法,语法,背景知识词法:决定是否能一个词一个词的读下来
语法:决定是否能明白,表达式或者语句要做什么
背景知识:决定是否能理解整个篇章在做什么
想一想,我们从出生就生活在汉语(举例而已,少数民族同胞不要仇视)的环境里,天天看、听、说,能比较顺畅的表达自己的意图用了多少年?
诚然,编程语言在这三要素上的信息量都要远小于整个汉语世界:关键字很少,TR1文法的语句有限,背景知识也只有现代科学的几十年,但是,想把这些都了解清楚也非朝夕之功可为。
HTML/CSS入门要简单一些,在入门阶段,它们看起来更像是七巧板或者积木,能抓住东西的小孩子都能玩,所以会感觉到入门容易。可是,做到高级,仍然要考验设计师的想象力的。并不是人人都可以用乐高制作一把乐高重机枪_视频在线观看。这需要背景知识和想象力。
相比之下,js家的门槛要高不少。首先是语言本身,只是简单的词法和语法就够学一阵子的了(这取决于你的编程语言经验,掌握类似的语言,学起来自然快)。但,只会词法和语法真心没什么鸟用,比如:

那么,让你觉得js入门难的倒底是什么呢? 其实是背景知识!
虽然我们很小就会说话,但并不会五言、七言、蝶恋花、江城子等等,这些东西是别人定义好的格式,我们只要拿来用,并且用得对,就会有不错的效果。这相当于编程基础里的数据结构。
虽然我们很小就会说话,但有时把一件事啰里啰嗦讲半天,自己都觉得没讲明白,当然别人也没听明白。后来慢慢知道一画开天、精卫填海、画地为牢、红杏出墙等等,简洁清楚,这也是别人定义好的,很好用。这相当于编程基础里的算法。
背景知识还有很多很多,如:Big Endian、农历、等差数列、角函数、傅里叶变换、AI……
一处不到一处迷,只要写代码的人用了你不知道的知识,你就会看不懂。
那么,回到正题,题主觉得js入门难,大致有两大方面的知识欠缺
- 编程相关的基本知识:计算机原理、数据结构、算法分析等等
- 浏览器工作原理及编程相关的API
而要成为职业WEB前端,还要了解整个前端的生态环境,那是一条永不止步的求索之路。 就多写这是我在块我在说一下吧。
题主现在应该处于:想动手写点东西,但是又不是怎么开始的这一个阶段。
其实我有很长一段时间是处于这个阶段,我看了完了《DOM艺术编程》,照着书上的例子写,基本就是抄。
然后关上书,还是什么都写不出来,老是去回想书里的下一步要做什么,自己根本没有思路。
看完《DOM艺术编程》后,最大的收获是 js操作dom元素还多少知道些,创建个div 创建个P 创建个txt 把txt插入到P 把P插入到div 然后把div插入到body。
我给题主的建议是前期多找js操作dom的例子来写,正面反馈,看得见摸得着。不会打击学习的积极性。
比如写一个焦点图的的例子。
写轮播图的HTML css
↓
写点击的事件,把点和对应的div关联起来
↓
用settimeout让他们动起来
↓
点击“点”后,发现自动滚动发生混乱,想办法解决。
到这里一个最基本的焦点图的例子就写完了。在写这个例子的时候你可能用到了(以JQ举例)attr eq settimeout clearInterval 等。然后你觉得这个焦点图 点一下切换一张图太单调了,你想点一下图片有个进场的动画, 这时候你又学到了用js控制 translate3d 、left 的值。
我记得 @mu mu 大神之前用游戏来形容学习编程,我很喜欢。
游戏里常有这样的设定,开局的时候,整张地图都是雾蒙蒙的,什么也看不见。先选个地方造兵采矿,建立基地,再派兵去周围的地方探索,继续造兵采矿,占领的地方越来越多,整张地图也越来越清晰。编程也是这样,一开始的时候,什么都看不清,什么都不懂,学了几年也写不出个软件。传统的学习模式是,学习,理解,运用,而学编程的时候,可以灵活一点。把编程知识想象成一个3D网络,每个知识点都是网络中的一个节点,每个节点上有一盏灯,你学会了,灯就亮了,可以看到周围的节点,接着走,点灯,再走,再点灯,这样,灯亮的越来越多,看的越来越清楚,对于自己要走的方向也越来越有信心。基本的思想是,先用后学,缩短反馈,反复迭代。
为技术而生,岂这么容易。 看别人的代码只需要看整块函数的意思就行了,这个其实看多了没多大问题的!要学好没有捷径只有自己动手写!!看着视频写,对着书写没有多大作用,因为发现不了问题,只要不断填坑 技术才能进步!!
var imf = function () { var lf = 0; var instances = []; //定义一个通过class获得元素的方法,并传入三个参数 function getElementsByClass (object, tag, className) { var o = object.getElementsByTagName(tag); //定义一个数组变量,通过标签名获取元素 //通过for循环来返回通过class获取的元素 for ( var i = 0, n = o.length, ret = []; i < n; i++) //变量n等于数组o的个数,字符类型是数值 //新增了一个数组ret用处暂不明确,继续往下读 //遍历数组o里面的每一个对象 if (o[i].className == className) ret.push(o[i]); //如果数组o里面元素的类名存在与传入的className参数名相同的话,将 //这个类名的元素添加到ret数组中(push是从数组末尾添加) if (ret.length == 1) ret = ret[0]; //如果数组ret的个数有1个存在,那么直接返回它 return ret; //for循环至此结束,继续下一个函数的读取 } //定义名为addEvent函数,并传入3个参数 function addEvent (o, e, f) { if (window.addEventListener) o.addEventListener(e, f, false); //通过if判断解决兼容性问题,如果浏览器支持.addEventListener() //方法,给数组o添加监听事件 else if (window.attachEvent) r = o.attachEvent('on' + e, f); //因为IE低版本浏览器的监听事件不符合w3c规范,只能用.attachEvent //方法来兼容 } //继续定义一个名字很奇怪的函数传入2个参数 function createReflexion (cont, img) { var flx = false; //变量flx的布尔值初始化为false,一般后面用来判断这个变量的存在是真 //还是假 if (document.createElement("canvas").getContext) { //这也是一个兼容性判断,如果浏览器支持h5 canvas .getContext属性 //和方法的话,就继续下去 flx = document.createElement("canvas"); //读到这里,我明白了为什么提前将变量flx = false 了;如果为true的话 //就没法判断浏览器是否支持canvas了 //这一步是动态创建canvas节点,名为flx flx.width = img.width; //定义canvas的宽度等于img的宽度 flx.height = img.height; //定义canvas的高度等于img的高度 var context = flx.getContext("2d"); //获取canvas的上下文环境 context.translate(0, img.height); //将canvas绘图表面向下平移img高度的像素,目的暂不明确 context.scale(1, -1); //将canvas绘图表面进行缩放操作,x轴放大1倍,y轴缩小1倍,暂不明白作者 //意图,-1应该是反向。 //又是向下平移,又是纵向翻转,应该是做一种上下对称的东西 context.drawImage(img, 0, 0, img.width, img.height); //.drawImage()方法,将图片绘制到canvas中,宽高都是图片的宽高 context.globalCompositeOperation = "destination-out"; //这个属性比较冷门,我是查资料才知道是:在源图像外显示目标图像。只有源 //图像外的目标图像部分会被显示,源图像是透明的。个人猜想作者利用这个 //属性不是简单的把img画到上去,而是想利用源图像外的部分来做文章。 var gradient = context.createLinearGradient(0, 0, 0, img.height * 2); //绘制起点为原点的60°角的线性渐变 gradient.addColorStop(1, "rgba(255, 255, 255, 0)"); //定义结束的颜色,不透明度为0 gradient.addColorStop(0, "rgba(255, 255, 255, 1)"); //定义开始的颜色,不透明度为1 context.fillStyle = gradient; //上面都是基于状态的绘制,这一步是执行绘制 context.fillRect(0, 0, img.width, img.height * 2); //绘制一个矩形,左上角坐标(0,0),右下角坐标(img宽度,img高度X2) } else { //如果浏览器不支持canvas,则用css滤镜来实现此效果 /* ---- DXImageTransform ---- */ flx = document.createElement('img'); flx.src = img.src; flx.style.filter = 'flipv progid:DXImageTransform.Microsoft.Alpha(' + 'opacity=50, style=1, finishOpacity=0, startx=0, starty=0, finishx=0, finishy=' + (img.height * .25) + ')'; } //上面那一大串,讲的是创建一个img标签替代canvas,定义图像src,定义滤镜 /* ---- insert Reflexion ---- */ flx.style.position = 'absolute'; flx.style.left = '-1000px'; cont.appendChild(flx); return flx; } //设置flx的css位置属性 //用.appendChild()方法将动态创建的flx作为子元素,添加到cont的节点中 //结束了 //码完注释,我猜想这是一段实现图片倒影的函数,倒影显示在图像的下方。
javascript 是经过一些逻辑之后,才能得到结果。
js中,只要有一点顺序不同,或者多几步,少几步,结果就会有很大不同。
你现在就想 直接看一段复杂的javascript,当然是看天书了。 js起步容易进阶难度较大
原型链彻底搞清楚的人不多
嘿嘿

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

運行 H5 項目需要以下步驟:安裝 Web 服務器、Node.js、開發工具等必要工具。搭建開發環境,創建項目文件夾、初始化項目、編寫代碼。啟動開發服務器,使用命令行運行命令。在瀏覽器中預覽項目,輸入開發服務器 URL。發布項目,優化代碼、部署項目、設置 Web 服務器配置。

H5 頁面製作是指使用 HTML5、CSS3 和 JavaScript 等技術,創建跨平台兼容的網頁。其核心在於瀏覽器解析代碼,渲染結構、樣式和交互功能。常見技術包括動畫效果、響應式設計和數據交互。為避免錯誤,應使用開發者工具調試;而性能優化和最佳實踐則包括圖像格式優化、減少請求和代碼規範等,以提高加載速度和代碼質量。

製作 H5 點擊圖標的步驟包括:在圖像編輯軟件中準備方形源圖像。在 H5 編輯器中添加交互性,設置點擊事件。創建覆蓋整個圖標的熱點。設置點擊事件的操作,如跳轉頁面或觸發動畫。導出 H5 文檔為 HTML、CSS 和 JavaScript 文件。將導出的文件部署到網站或其他平台。

H5referstoHTML5,apivotaltechnologyinwebdevelopment.1)HTML5introducesnewelementsandAPIsforrich,dynamicwebapplications.2)Itsupportsmultimediawithoutplugins,enhancinguserexperienceacrossdevices.3)SemanticelementsimprovecontentstructureandSEO.4)H5'srespo

H5不是獨立編程語言,而是HTML5、CSS3和JavaScript的集合,用於構建現代Web應用。 1.HTML5定義網頁結構和內容,提供新標籤和API。 2.CSS3控製樣式和佈局,引入動畫等新特性。 3.JavaScript實現動態交互,通過DOM操作和異步請求增強功能。

H5 彈窗製作步驟:1. 確定觸發方式(點擊式、時間式、退出式、滾動式);2. 設計內容(標題、正文、行動按鈕);3. 設置樣式(大小、顏色、字體、背景);4. 實現代碼(HTML、CSS、JavaScript);5. 測試和部署。

H5 頁面製作的優勢包括:輕量級體驗,加載速度快,提升用戶留存率。跨平台兼容性,無需針對不同平台適配,提升開發效率。靈活性和動態更新,無需審核,便於內容修改和更新。成本效益,開發成本比原生 App 低。

H5(HTML5)適合應用於輕量級應用,如營銷活動頁面、產品展示頁面和企業宣傳微網站。它優勢在於跨平台性和豐富的交互性,但局限性在於復雜的交互和動畫、本地資源訪問和離線功能。
