js学习笔记(获取选中内容、缓动动画、动态设置元素属性)

获取选中内容

1.标准浏览器
window.getSelection()拿到的是对象
window.getSelection().toString()拿到的是选中的文字
2.ie获取选中文字
document.getSelection().createRange().text
3.兼容性写法

if (window.getSelection){  //标准浏览器
                text = window.getSelection().toString();
            }else{              //ie系列
                text = document.getSelection().createRange().text;
            }

特效1:获取选中内容并通过微博分享

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>练习</title>
    <style type="text/css">
        *{
            margin: 0;
            padding: 0;
        }
        p{
            position: relative;
            margin: 100px;
            width: 300px;
            left: 30%;
        }
        #weibo{
            width: 26px;
            height: 26px;
            background-image: url("image/share.gif");
            position: absolute;
            display: none;
        }
    </style>
</head>
<body>
<p id="word">

    草莓布丁是一种很多人都喜欢吃的美食,那么如何做草莓布丁才好吃呢?关于这个问题,小编就和大家
    分享一下我的经验,希望能够帮助到大家。如果大家喜欢小编的文章,记得关注小编并转发哦!谢谢大家!”
    首先将棉花糖、QQ糖和牛奶一起倒入一个碗中,如下图所示。
    然后放入锅中隔水融化,如下图所示。
    接着放入我们喜欢吃的草莓,如下图所示。然后放入冰箱冷藏四个小时,拿出来切成我们喜欢吃的大小就可以了。
    一道美味可口的草莓布丁就做好了,希望大家能够喜欢。你学会了吗?赶快动手试一试吧。如果大家对小编的做
    有什么好的建议或者是不同的看法,欢迎大家给小编留言,谢谢大家。记得关注小编,转发小编的作品。小编将一如
    既往的给大家提供美食教程,你的支持将是小编创作最大的动力。
</p>
<div id="weibo">
</div>
<script src="工具/Tool.js"></script>
<script>
    window.addEventListener('load',function (ev) {
        var Stext = '';
        //监听鼠标松开
        Tool.$('word').addEventListener('mouseup',function (ev1) {
            var e = ev1 || window.event;
            //获取选中文字

            if (window.getSelection){  //标准浏览器
                Stext = window.getSelection().toString();
            }else{              //ie系列
                Stext = document.getSelection().createRange().text;
            }
            //显示微博图标
            if (Stext.length !== 0 ){
                Tool.$('weibo').style.display = 'block';
                //处理微博图片的位置
                Tool.$('weibo').style.left = e.pageX + 'px';
                Tool.$('weibo').style.top = e.pageY + 'px';
            }
        });
        //监听文档的区域(除去word)
        document.addEventListener('mousedown',function (ev2) {
            var e = ev2 || window.event;
            //获取点击目标的id
            var Id = e.target ? e.target.id : e.srcElement.id;
            //判断
            if (Id !== 'weibo'){
                Tool.$('weibo').style.display = 'none';
            } else{
                //跳转
                window.location.href = 'http://v.t.sina.com.cn/share/share.php?searchPic=false&title=' + Stext + ' ' +
                    '&url=https://www.csdn.net/'
            }
        })
    })
</script>
</body>
</html>

特效2:缓动动画2

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>缓动动画2</title>
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
        }
        #box{
            width: 100px;
            height: 100px;
            background-color: red;
            position: absolute;
        }
    </style>

</head>
<body>
<!--缓动:由快到慢-->
<button id="btn">往右走</button>
<div id="box"></div>
<script src="工具/Tool.js"></script>
<script>
    window.addEventListener('load',function (ev) {
        var ding = null, target = 800, step = 0, box = Tool.$('box');
        Tool.$('btn').addEventListener('click',function () {
            clearInterval(ding);
            //begin = begin +(end - begin) * 0.2
            //步长就是(end - begin) * 0.2
            ding = setInterval(function () {
                step = (target - box.offsetLeft) * 0.2;
                step = Math.ceil(step);//因为缓动系数是小数,step最终无法到800,所以要向上取整
                box.style.left = box.offsetLeft + step + 'px';
                box.innerText = box.offsetLeft;
                if (box.offsetLeft === target){
                    clearInterval(ding);
                }
            },20)
        })
    })
</script>
</body>
</html>

js访问css属性

1.点语法box.style.left
跟在style后面的属性不能由外面传入

var h = 'height';
box.style.h = 300 + 'px';

就没有将height设置成300px,是错误的
2.下标语法box.style[left]
这种语法的好处就是可以动态的传递参数作为属性

var h = 'height';
box.style[h] = 300 + 'px';

可以将height设置成300px,是正确的

特效3:动态设置元素属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>动态设置元素属性</title>
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
        }
        #box{
            width: 100px;
            height: 100px;
            background-color: red;
            position: absolute;
        }
    </style>

</head>
<body>
<button id="btn1">改变颜色</button>
<button id="btn2">改变长度</button>
<div id="box"></div>
<script src="工具/Tool.js"></script>
<script>
    Tool.$('btn1').addEventListener('click',function () {
        changeCSS(Tool.$('box'),'background','green');
    });
    Tool.$('btn2').addEventListener('click',function () {
        changeCSS(Tool.$('box'),'width','1000px');
    });

    /**
     * 改变css的样式
     * @param ele  要改变的目标元素
     * @param attr 目标元素要改变的css样式
     * @param value   改变后的样式
     */
    function changeCSS(ele, attr, value) {
        //ele.style.attr = value;  错误,.arrt就直接是arrt,并不是传进来的样式
        ele.style[attr] = value;//正确
    }
</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会为您解答关于WebGL three.js的阴影与实现物体动画的问题。首先,让我们来了解一下WebGL three.js是什么。 WebGL three.js是一款基于WebGL的JavaScript 3D库,可以帮助我们快速搭建3D场景和应用。接下来我们来讲解阴影和实现物体动画的方法。 一、阴影 阴影是模拟物体之间的阴影效果,让3D场景更加真实。在three.js中,我们可以通过设置Mesh的castShadow和receiveShadow属性来实现阴影效果。 1. 首先,我们需要在场景中添加光源,例如SpotLight或DirectionalLight。 2. 然后,在需要投射阴影的物体上设置castShadow为true。 3. 最后,在需要接收阴影的物体上设置receiveShadow为true。 代码示例: ```javascript // 添加光源 const light = new THREE.SpotLight(0xffffff); light.position.set(0, 100, 0); light.castShadow = true; scene.add(light); // 添加需要投射阴影的物体 const cube = new THREE.Mesh(new THREE.BoxGeometry(10, 10, 10), new THREE.MeshLambertMaterial({ color: 0xff0000 })); cube.castShadow = true; scene.add(cube); // 添加需要接收阴影的物体 const plane = new THREE.Mesh(new THREE.PlaneGeometry(200, 200, 1, 1), new THREE.MeshLambertMaterial({ color: 0xffffff })); plane.receiveShadow = true; plane.rotation.x = -Math.PI / 2; scene.add(plane); ``` 二、物体动画 在three.js中,我们可以通过Tween.js库来实现物体的动画效果。Tween.js是一款JavaScript动画库,可以帮助我们实现非常丰富的动画效果。 1. 首先,我们需要在HTML文件中引入Tween.js库文件。 2. 然后,在需要动画的物体上设置初始状态。 3. 最后,通过Tween.js库来设置物体的目标状态和动画效果,例如缓动动画(ease)或弹跳动画(bounce)。 代码示例: ```javascript // 引入Tween.js库文件 <script src="https://cdnjs.cloudflare.com/ajax/libs/tween.js/18.6.4/tween.min.js"></script> // 添加需要动画的物体 const cube = new THREE.Mesh(new THREE.BoxGeometry(10, 10, 10), new THREE.MeshLambertMaterial({ color: 0xff0000 })); cube.position.set(0, 0, 0); scene.add(cube); // 设置初始状态 const start = { x: 0, y: 0, z: 0 }; // 设置目标状态 const end = { x: 50, y: 50, z: 50 }; // 设置动画效果 const tween = new TWEEN.Tween(start) .to(end, 1000) .easing(TWEEN.Easing.Quadratic.InOut) .onUpdate(() => { cube.position.set(start.x, start.y, start.z); }) .start(); ``` 以上是关于WebGL three.js阴影与实现物体动画的方法,希望能够对您有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值