前端知识学习笔记(重构版)

因为之前并没有好好写啦,最多是当个笔记记录下来,自己都看不下去,no heart working  write file touch fish ing~

学习课程和笔记都是bilibili上的尚硅谷系列课程~

这边只是一个整理啦,网上有很多教程的,such ms 的官网文档和教程,但我总是觉得官方文档有些晦涩难懂,但他又很权威,所以我会选择主看官方文档,辅助csdn啊  bilibili 菜鸟教程等

强推一个博主——阮一峰 我是阮老师舔狗,呲溜!呲溜!

(你已经是一个成熟的程序员了,要学会自己看官方文档哦!)

推荐IDE:VScode

推荐前端插件: Live Server

前端肯定是离不开三件套的

html 定义 结构

css 定义 表现

javascript 定义 行为

学习前端的话,很推荐先学完基本用法和知识点就可以去github上看看别人做好的页面,看看在实际项目中这些组件是如何组合的,才能实现出那么漂亮的效果

html部分类型

文件后缀为.html

首先只需要一个 ! 回车就会出现默认板子了,其中 head组件下的title组件之间内容是web名

会显示在页面内部的是body组件里面

这部分代码基本已经把常用的组件介绍完了(除了from和table)


<header>这是头部</header>
<div>占一整行的盒子</div><!--多用于表示一个区块-->
<span>多个小盒子占同一行</span>
<span>2号小盒子</span>
<p>
    <!-- 这是一个不换行的段落 -->
    <strong>加粗</strong>
    <em>倾斜</em>
    <del>删除线</del>
    <ins>下划线</ins>
</p>
<!-- 这是6级标题大小字号 -->
<h1>这是一个标题</h1>
<h2>这是一个标题</h2>
<h3>这是一个标题</h3>
<h4>这是一个标题</h4>
<h5>这是一个标题</h5>
<h6><em>这是一个倾斜的标题</em></h6>
<!-- 这是一个新的段落 -->
<p>abaaba</p> 
<!-- 换行 -->
<br>
<!--
    列表 list
    1.有序列表 
    2.无序列表
    3.定义列表

    无序
    ul建立列表
    li为列表项

    有序
    ol建立列表
    
    定义
    dl 建立列表
    dt表示定义的内同
    dd表示内容的解释说明

    列表可互相嵌套
-->
<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>
<ol>
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ol>
<dl>
    <dt>名词</dt>
    <dd>名词的解释</dd>
    <dt>名词2</dt>
    <dd>名词的解释</dd>
</dl>

<!--
    超链接
    可以从一个页面跳转到其他页面
    或者当前页面其他位置 比如给一个控件设置
-->
<a href="http://www.baidu.com" target="_blank">百度一下</a>
<!--href为链接地址(自己的页面的话就输入相对地址), target为弹出方式,如果是_self就是当前窗口打开(默认值) _blank 就是新开一个窗口打开-->

<br>
<a href="#img1">跳到图片</a>
<!--  
    src处也可放链接地址 
    alt 图片无法加载时显示
-->
<img id="img1" loading="lazy" src="images/xyjy.jpg" width="258" height="180" alt="老婆" />
<!-- 
    audio 音频
    video 视频
    默认是用户不可以控制的   controls可以出现暂停开始选项,autoplay可以让视频自动播放
-->
<video src="./source/test.mp4" controls autoplay>test</video>

CSS笔记1

基础选择器语法(当然可以将你这个页面的css放入style组件中,但是我们总归是要干开发的不是么,所以请习惯文档分开的格式)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 引入css配置文件 -->
    <link rel="stylesheet" href="../css/demo1.css">
</head>
<body>
    <p>test 标签选择器</p>
    <p id="iddemo">test id选择器</p>
    <p class="classdemo classdemo2">test class选择器</p>
    <!-- <div>统配选择器demo</div> -->
    <div class="demo1 demo2">交集选择器demo</div>
    <div>
        <h4>
            <span>这个不会变色哦</span>
        </h4>
        <span>这个会变色哦</span>
    </div>
</body>
</html>

demo1.css

/* 
css 基本语法:
    选择器:声明块   
一个组件只会应用第一次匹配上的css格式代码,之后的无效
*/
/* 
标签选择器
p标签的颜色都设置为red 字体大小都是60px 
当然这样选择很蠢,当不是完全没有用处
*/
p{
    color: red;
    font-size: 30px;
}
/*
id选择器
每个组件的id是unique
所以这个只能让一个组件改变格式 
只能说有用
*/
#iddemo{
    color: blue;
}
/*
class选择器(常用) class是可以重名的, 每个组件可以有多个class
*/
.classdemo{
    color: pink;
}
.classdemo2{
    font-size: 50px;
}
/* 
通配选择器 都会选择上
*/
/* {
    color: green;
} */
/* 
交集选择器
条件1条件2条件3
如果有标签选择器的话得放在最前面
*/
.demo1.demo2{
    color: aqua;
}
/* 并集选择器  条件1,条件2 no demo 懒*/
/* 
子元素选择器
父元素>子元素(当然可以多个嵌套啊)
*/
div>span{
    color:orange;
}
/* 
后代选择器
祖先元素 后代元素
*/
div span{
    font-size: 100px;
}
/* 
兄弟选择器
下一个兄弟会改变用+ 下面所有兄弟用~
p+span{}
p~span{}
*/

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="../css/demo2.css">
</head>
<body>
    <div title="red">title is red</div>
    <div title="demo2">title existed</div>
    <div>title is none</div>
    <a href="http://www.baidu.com" target="_blank">访问过</a>
    <br>
    <a href="http://www.google.com" target="_blank">没访问过</a>


    <div id="box1" class="red">i am a div </div>
    <div class="box2"></div>
</body>
</html>

demo2.css

/* 
属性选择器
什么标签含有什么值的属性会被选中
[属性名] 含有该属性名的都会被选中
[属性名=属性值] 该属性值相同的会被选中
[属性名^=属性值] 以属性值为开头
[属性名$=属性值] 以属性值结尾
[属性名*=属性值] 含有该属性值
就是正则呀
*/


div[title=red]{
    color: red;
}
/*伪类部分跳过,问就是懒得写 觉得没用*/

/* 访问过 */
a:visited{
    color: aqua;
}
/* 没访问过 */
a:link{
    color: red;
}
/* visited和link是a专属的 */
/* 鼠标移入 */
a:hover{
    color: orange;
}
/* 鼠标点击 */
a:active{
    color: yellowgreen;
}
/* 
当我们通过不同的选择器选择相同的元素,并且设置不同值时,
通过选择器的优先级决定
内联>id>类和伪类>元素
    #    .     div
如果是多个条件的选择器的话,只看最大的那个
*/
div{
    color: yellow;
}
.red{
    color: red;
    
    /* 颜色也可以用RGB来表示比如红色 rgb(255,0,0) 或者#f00(自动省略 =#ff0000)*/
}


/* 
宽度和高度也可以设置为百分比,这样可以在缩放页面时保持相对大小
*/
.box2{
    background-color: aquamarine;
    width: 200px;
    height: 200px;
}

上述都是基础知识,看的懂会用就好了

接下来是CSS的正片  layout

但是我记录的并不详细,就感觉这些知识很杂,而且很容易理解其实,所以这段建议多看看相关资料

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="../css/layout.css">
</head>
<body>
    <div id="box1">
        <div style="background-color: blue;height: 50px;"><span>span1</span><span>span2</span></div>
        <div style="background-color:red; height: 800px;"><span>span3</span><span>span4</span></div>
    </div>
</body>
</html>
/* file name : layout.css */
/* 
盒子模型
每一个盒子都由以下几个部分组成
内容
内边距
边框
外边距
width 和 height 设置的是内容区大小

visibility用于设置元素的显示状态:
visible 默认值正常显示
hidden 不显示但依然有位置
*/
#box1{
    width: 800px;
    height: 200px;
    background-color: aquamarine;
    /* 边框为border 内边距改为padding即可 外边距为margin*/
    border-width: 10px;
    /* 等同于上下左右均为该数值 分开设置eg:border-left-width */
    border-color: yellow;
    border-style: solid; 
    /*
    style可选值有
    solid 实线
    dotted 点状虚线
    dashed 虚线
    double 双线
    none 默认值  不显示
    */

    margin-top: 100px;
    margin-left: 100px;
    /* 设置滚动条,当子元素超过边界时出现 */
    overflow: auto; 
}

CSS好难  我只想抄作业  哭了

就这样吧  学CSS的事情下次一定 

Javascript 笔记


重新介绍 JavaScript(JS 教程) - JavaScript | MDN  这个资料不错

首先这门语言是一门新的编程语言,与我们之前学的java并没有什么关系,语言学多了,发现很多功能都一个吊样的,接下来只会放一些不同的东西

demo——浏览器警告框和控制台输出(浏览器检查console位置)以及javascript编写位置

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //浏览器弹出一个警告框
        alert("this is my first js code")
        //向body里面写如string
        document.write("这将会呈现在网页主体部分")
        //控制台输出一个内容
        console.log("这将会呈现在控制台")
    </script>
</head>
<body>
    <br>
    <button onclick="alert('讨厌')">点我</button>
    <br>
    <a href="javascript:alert('讨厌,还点我干嘛')">这是个超链接</a>
</body>
</html>

但是在实际开发中我们依然选择这样引入

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!--外部引入js文件-->
    <script type="text/javascript" src="script.js">
       //内部继续编写命令并不会执行
    </script>
</head>

<body>
    <p id="demo">demo</p>
    <p id="duanluo1">enheng</p>
    <button onclick="test()">点击</button>
    <h1>JavaScript 验证输入</h1>
    <p>请输入 1 到 10 之间的数字:</p>
    <input id="numb">
    <button type="button" onclick="myFunction()">提交</button>
    <!-- <img loading="lazy" id="myimage" onclick="changeimg()" src="/images/pic_bulboff.gif" width="100" height="180"> -->
</body>

</html>

同目录下的script.js文件如下


function test(){
    x=document.getElementById("duanluo1");
    x.innerHTML = "改变~就是好事"+Date();
    document.getElementById("demo").innerHTML = person.fullName();
}
function myFunction() {
    var x, text;
    // 获取 id="numb" 的值
    x = document.getElementById("numb").value;
    // 如果输入的值 x 不是数字或者小于 1 或者大于 10,则提示错误 Not a Number or less than one or greater than 10
    if (isNaN(x) || x < 1 || x > 10) {
        text = "输入错误";
    } else {
        text = "输入正确";
    }
    alert(text);
}
/*
function changeimg()
{
    element=document.getElementById('myimage')
    if (element.src.match("bulbon"))
    {
        element.src="/images/pic_bulboff.gif";
    }
    else
    {
        element.src="/images/pic_bulbon.gif";
    }
}
*/

标明一些不一样的点

首先javascript的变量类型为var  你可以把他看做是C++的auto

还有const指定常量

后续还有let(和var差不多)

其余基本语法其实和python很像

还有一个就是这里面是没有类和对象的demo的,因为在后续的学习中发现html5支持了class,所以object就没用那么多了

ok在上面这个例子中还有一个很重要的东西DOM document object model

就是javascript是如何联系上这些组件节点的

介绍DOM就得分为

1.拿到节点

document.getElementById(id); //id是唯一的,所以拿到的节点是准确的

document.getElementsByTagName(div);// 会拿到所有的div节点        

document.getElementsByClassName(classname);//这里就和css的class选择器规则一毛一样

2.操作节点

        (1).更新

                node = document.getElementById(id);

                node.innerHTML = '新内容';

                node.style.color = 'red'

        (2).插入

                node = document.getElementById(id);

                newNode = document.createElement('div')

                newNode.innerHTML = '?'修改文本

                node.appendChild(newNode); // 默认最后一个

                插入到某一个之前的语法

                parentElement.insertBefore(newElement, referenceElement);                

        (3).删除

                parentElement.removeChile(node)

demo一点点基本用法

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //通过id来找html元素
        var x = document.getElementById("p1");
        //通过类名来select html元素
        var red = document.getElementsByClassName("red");
        //通过标签名来select html元素
        var ppp = document.getElementsByTagName('P');
        //当然对象不仅可以是document中的类型,也可以从之前挑选的大类中继续select
        //现在我们来尝试完成一个时间显示器
    </script>
</head>

<body>
    <h1 onclick="this.innerHTML='Ooops!'">点击文本!</h1>
    <p id="p1" class="red"></p>
    <p id="p2">try try</p>
    <script>
        function time_now() {
            x = document.getElementById("p1");
            x.innerHTML = Date();
            x.style.color = "red";
        }
        setInterval("time_now()", 1000);
    </script>
    <script>
        function myFunction() {
            var x = document.getElementById("fname");
            x.value = x.value.toUpperCase();
        }
    </script>
    <button onclick="document.getElementById('p2').style.color='blue'">按我</button>
    <br>
    输入你的名字: <input type="text" id="fname" onchange="myFunction()">
    <p>当你离开输入框后,函数将被触发,将小写字母转为大写字母。</p>
    <!--onmouseover 和 onmouseout 事件可用于在用户的鼠标移至 HTML 元素上方或移出元素时触发函数。-->
    <p onmouseover="this.innerHTML='red'" onmouseout="this.innerHTML='balck'">blacks</p>
</body>

</html>

React

一个框架

内容太多太杂了,而且很多特性我目前并不会用到,而且我自己的笔记有点乱,我不想再搞了很累耶!!!  所以就放点新东西吧!

其实就是一个提供自定义组件的方式啦

哎!内容太多,下次一定记

完结撒花,继第一个粗略学完后,发现了很多不足,于是就二刷,今天完结了redux系列

redux

教程+课件
链接:https://pan.baidu.com/s/1hS746pu37B78glu5u-TaPw
提取码:1dz2

这是别人的

我自己当然也写了,只是有一个优化一直不行,而且我司的文件结构和他推荐的不一样我就用我司的文件结构写demo了

最近有task了,不忙的时候一定来写点笔记放在这里,当然也有可能吧react+redux+hook挪出去,解耦嘛,不然一篇看着太长了

HOOK

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值