前端技术——8——前端技术总结补疑

Posted kaoa000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端技术——8——前端技术总结补疑相关的知识,希望对你有一定的参考价值。

html、CSS、JS以及JQuery总结:

现在的HTML主要是实现内容的呈现,CSS是对内容进行布局和装饰,JS以及jQuery是对内容的操作,即实现内容的动态改变。

前后端的交互,现在学到的主要是HTML的form表单:

<form action="url" method="GET | POST" enctype="multipart/form-data">
<input type="file" name="f">  //如果有file类型字段,form标签中要有enctype="multipart/form-data"
<input type="submit">
</form>

能够向后台传递个字段主要有:input标签 type=“text、radio、checkbox、file、hidden、password”等,select标签,textarea标签,这几个标签必须设置name属性,name的值就是设置传递数据的key,标签的value是传递的数据的值,后台接收的是字典,key就是前端标签的name值,value就是前端标签的value值。

CSS主要的是float:

清除浮动——:after的用法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .left
            float: left;
        
        .container
            background-color: rosybrown;
        
        .container .item
            width: 180px;
            height: 150px;
            background-color: #336699;
            border: 1px solid red;
        
        .clearfix:after
            content: "ooo"; /*//增加的内容,在页面上显示,但不能选定*/
            display: block; /*以块级标签显示*/
            clear: both;  /*清除浮动,撑起外层div*/
            visibility: hidden; /*不想显示content增加的内容,但是占据位置,display:none则是不显示内容,也不占据位置*/
            height: 0; /*这样浏览器上外观显示就没有ooo这个内容,也不占位置了,但在文档流中还有的*/
        
        /*//.container:after 是在container标签内部的沉底部位增加内容*/
        /*以后只要在对应的标签中增加class=“clearfix”就能撑起这个标签,好处是一直在标签的最底部增加,即使是动态增加子标签*/
    </style>
</head>
<body>
<div class="container clearfix">
    <div class="item left"></div>
    <div class="item left"></div>
    <div class="item left"></div>
    <div class="item left"></div>
<!--    <div style="clear: both"></div> /* 以前的做法,在.container内部增加一个div,清除浮动,撑起container*/-->
</div>
</body>
</html>

1、已知外层高度,内元素浮动时,外层按照已知已设置的高度被撑开

2、未知外层高度
        -- 原来做法:在内元素沉底位置增加<div style="clear:both";> </div>
        -- 推荐做法:写一个样式,如上的:
        .clearfix:after
            content: "ooo"; 
            display: block;
            clear: both;  
            visibility: hidden;
            height: 0;
       
        然后在需要的标签上增加class为clearfix就可以。

hover的应用:

.c1
    background-color:red;

.c1:hover
    background-color:pink;

以上样式,当鼠标放在.c1标签上时,背景色变为pink;鼠标移出标签,背景色变为red。

.c1:hover .c2
    background-color:blue;

以上样式,是当鼠标放在c1上时,c2的样式改变。

实现一个鼠标进入和离开时改变的例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .clearfix:after
            content: "ooo";
            display: block;
            clear: both;
            visibility: hidden;
            height: 0;
        
        .container
            background-color: red;
        
        .container .item
            width: 180px;
            height: 150px;
            background-color: #336699;
            border: 1px solid red;
            overflow: hidden;
            position: relative;//加上这一条,是为了给遮罩层定位用的

        
        .left
            float: left;
        

        .container .item:hover  /*当鼠标放在item标签上时,item自身改变*/
            border: 1px solid yellow;
        
        .container .item .text 
            display: none;
        
        .container .item:hover .text
            display: block;
        /*当鼠标选中item时,item下的text标签发生改变*/
    </style>
</head>
<body>
<div class="container clearfix">
    <div class="item left">
        <div class="bg">
            <img src="1.jpg" style="height: 150px;width: 180px">
        </div>
        <div class="text">
            <div style="z-index:9;position: absolute;left: 0;right: 0;top:0;bottom: 0;background-color: deeppink;opacity: 0.4;"></div>
            //上面的div为遮罩层,其定位,需要一个position:relative
            <div style="z-index:10;position: absolute;left: 0;right: 0;top: 0;bottom: 0;color: yellow">内容介绍</div>
            //上面的div为遮罩层上的文字层,其定位,也需要一个position:relative
        </div>
    </div>
    <div class="item left">
        <div class="bg">
            <img src="1.jpg" style="height: 150px;width: 180px">
        </div>
        <div class="text">
            <div style="z-index:9;position: absolute;left: 0;right: 0;top:0;bottom: 0;background-color: deeppink;opacity: 0.4;"></div>
            //上面的div定位,需要一个position:relative
            <div style="z-index:10;position: absolute;left: 0;right: 0;top: 0;bottom: 0;color: yellow">内容介绍</div>
        </div>
    </div>
    <div class="item left">
        <div class="bg">
            <img src="1.jpg" style="height: 150px;width: 180px">
        </div>
        <div class="text">
            <div style="z-index:9;position: absolute;left: 0;right: 0;top:0;bottom: 0;background-color: deeppink;opacity: 0.4;"></div>
            //上面的div定位,需要一个position:relative
            <div style="z-index:10;position: absolute;left: 0;right: 0;top: 0;bottom: 0;color: yellow">内容介绍</div>
        </div>
    </div>
</div>
</body>
</html>

 主要应用了:hover .class

另一个应用:类似下拉菜单栏的例子:

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *
            margin: 0;
        
        .left
            float: left;
        
        .right
            float: right;
        
        .pg-header
            height: 48px;
            background-color: #336699;
            color: white;
            line-height: 48px;
        
        .pg-header .logo
            width: 200px;
            align-content: center;
            margin-left: 10px;
        
        .pg-header .user
            padding: 0 40px;
            height: 48px;
            position: relative;
        
        .pg-header .user:hover
            background-color: palegoldenrod;
        

        .pg-header .user .au img
            width: 40px;
            height: 40px;
            margin-top: 4px;
            border-radius: 50%;
        
        .pg-header .user .more
            position: absolute;
            width: 150px;
            top: 48px;
            right: 16px;
            border: 1px solid red;
            background-color: #b4b4b4;
            display: none;
            z-index: 90;
        
        .pg-header .user .more a
            display: block;
        
        .pg-header .user:hover .more
            display: block;
        
        .pg-body .body-menu
            position: absolute;
            top: 50px;
            bottom: 0;
            left: 0;
            width: 200px;
            border: 1px solid forestgreen;
        
        .pg-body .body-content
            position: absolute;
            top: 50px;
            bottom: 0;
            left: 210px;
            right: 0;
            border: 1px solid forestgreen;
            overflow: auto;
            z-index: 10;
        
    </style>
</head>
<body>
<div class="pg-header">
    <div class="logo left">后台管理页面布局演示</div>
    <div class="user right">
        <a class="au">
            <img src="1.jpg">
        </a>
        <div class="more">
            <a>我的信息</a>
            <a>注销</a>
            <a>更多信息</a>
        </div>
    </div>
</div>
<div class="pg-body">
    <div class="body-menu"></div>
    <div class="body-content"></div>
</div>
</body>
</html>

javascript总结补充:

作用域和作用域链:

Java/C#中,代码块作为作用域,Python中以函数作为作用域。

而JavaScript中,以函数作为作用域;函数在被调用之前,作用域链已经存在。

<script>
            xo = 'alex';
            function f1()
                var xo = 'eric';
                function f2()
                console.log(xo);
               
                return f2
           
            var xxxxx = f1()
            xxxxx()
            // eirc
</script>

 声明提前:

 function func() 
            console.log(ox);
            var ox = '  '
            var ox = '  '
       
  func()

jQuery:找元素(直接,间接);操作(属性、增加、删除、修改。。。)

事件绑定方式:

DOM下绑定事件:

1)、<p id="p1" οnclick="func1(this);">hello p</p>
2)、var ele=document.getElementById("p1");
                ele.οnclick=function()alert (this.innerHTML);

jQuery下绑定事件:

1)、$("p").click(function()$(this).css("color","red");)

$(document).ready(function()      //当js代码放在HTNL文档开头时,使用这个格式等待HTML加载完成在执行代码,就不会出现元素找不到的情况。

简写方式:$(function()   )

事件相对于DOM,将前面的on去掉

2)、$("p").bind("click",function())  //不推荐使用了

3)、$("P").on("click","li",function())

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<ul>
    <li>11111</li>
    <li>22222</li>
    <li>33333</li>
    <li>44444</li>
</ul>
<input type="button" value="+" onclick="add();">
<p>pppppppppppppppp</p>
<script src="jquery-3.6.0.js"></script>
<script>
    function add() 
        $("ul").append("<li>555555</li>");
    
    // $("ul li").click(function () 
    //     alert(456);
    // )
    // //上面的绑定事件的方式,为直接使用事件click(),对动态添加的标签无法绑定
    $("ul").on("click","li",function () 
        alert(666);
    )
    //上面的绑定事件方式,为使用on方式,动态添加的元素也能生效。
    function myHandler(event) 
        alert(event.data.foo);
    
    $("p").on("click",foo:"bar",myHandler);
    //上面标签绑定事件,传递一个字典作为参数,在事件函数中,定义event参数,通过event来获取这个参数

</script>
</body>
</html>

 on方式的绑定,叫做事件委托,将绑定到li上的事件,委托给ul。on有四个参数。

面板拖动示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div style="border: 1px solid #ddd;width: 600px;position: absolute">
    <div id="title" style="background-color: black;height: 40px;color: white">
        标题
    </div>
    <div style="height: 300px;">
        内容
    </div>
</div>
<script src="jquery-3.6.0.js"></script>
<script>
    $("#title").mouseover(function () 
        $(this).css("cursor","move").mousedown(function (event) 
            var start_x = event.screenX;
            var start_y = event.screenY;
            var parent_left = $(this).parent().offset().left;
            var parent_top = $(this).parent().offset().top;

            $(this).on("mousemove",function (event2) 
                var new_x = event2.screenX;
                var new_y = event2.screenY;

                var new_parent_x = parent_left + new_x - start_x;
                var new_parent_y = parent_top + new_y -start_y;

                $(this).parent().css("left",new_parent_x+"px");
                $(this).parent().css("top",new_parent_y+"px");
            ).mouseup(function () 
                $(this).off("mousemove");

            );
        );
    );

</script>
</body>
</html>

鼠标按住标题栏拖动

 动画显示隐藏示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>hello world</p>
<input id="show" type="button" value="显示">
<input id="hide" type="button" value="隐藏">
<input id="toggle" type="button" value="切换">
<script src="jquery-3.6.0.js"></script>
<script>
    $("#show").click(function () 
        $("p").show(2000); 
    )//显示,有一个慢动作的拉幕效果
    $("#hide").click(function () 
        $("p").hide(2000);
    )//隐藏,有一个慢动作的收幕效果
    $("#toggle").click(function () 
        $("p").toggle(5000);
    )//实现上述显示和隐藏功能,当前是显示的,则隐藏,当前是隐藏的则显示
</script>
</body>
</html>

淡入淡出动画示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="div1" style="display: none;width: 200px;height: 200px;background-color: forestgreen;"></div>
<input id="In" type="button" value="fadeIn">
<input id="Out" type="button" value="fadeOut">
<input id="Toggle" type="button" value="fadeToggle">
<input id="To" type="button" value="fadeTo">
<script src="jquery-3.6.0.js"></script>
<script>
    $("#In").click(function () 
        $("div").fadeIn(2000);
    )
    $("#Out").click(function () 
        $("div").fadeOut(2000);
    )
    $("#Toggle").click(function () 
        $("div").fadeToggle(2000);
    )
    $("#To").click(function () 
        $("div").fadeTo(2000,0.3);
    )//最后出来的背景透明度为0.3
</script>
</body>
</html>

滑动动画:slideDown()、slideUp()、slideToggle()

回调函数:

$("#show").click(function ()
        $("p").show(2000,function() 。。。  ); 
    )

当show方法2秒完成后,即show方法完成了动作,然后调用函数,这里的function就是回调函数,即定义的动作或事件完成后,再调用的函数。

jQuery扩展:使用extend()方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>hello pppp</p>
<script src="jquery-3.6.0.js"></script>
<script>
    $.extend(
        getmax:function (a,b) 
            return a>b ? a:b;
        
    );//直接在jQuery上扩展,调用时是$加上点调用
    alert($.getmax(5,6));

    $.fn.extend(
        print:function () 
            alert($(this).html());
        
    );//这种扩展,调用时必须是一个标签
    $("p").print();
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    var f = function (a) 
        alert(a);
    ;
    f(123);
    //上下等同
    (function (a) 
        alert(a);
    )(123);
//将扩展方法放在自执行函数中,属于私有域,避免重名变量冲突
    (function () 
        $.fn.extend(
            print:function()
                console.log($(this).html());
            ;
        );
    )();

</script>
</body>
</html>

以上是关于前端技术——8——前端技术总结补疑的主要内容,如果未能解决你的问题,请参考以下文章

【前端】进度条样式实现

web前端技术总结

物联网平台:前端技术选型总结

个人技术总结---Android前端界面框架搭建

前端遇到技术问题总结20210315

2019-2020-2 20175234 赵诗玥 《网络对抗技术》Exp 8 Web基础