onmouseover 、onmouseout 与onmouseenter 、onmouseleave的区别

浅谈js中onmouseleave和onmouseout的区别 给元素绑定事件,当元素没有子元素的时候,上面两个事件没有区别。当元素有子元素的时候,上面两个的触发机制不同。onmouseleave触发的条件是当鼠标离开了父元素的区域(只要在父元素的里面即可,可以在父元素的子元素上面的),onmouseout触发条件是给那个元素绑定了,就必须只能在这个元素上,鼠标进入该元素的子元素,也表示离开了当前的元素,会触发onmouseout。 阅读详情
属性描述
onmouseenter当鼠标指针移动到元素上时触发。
onmouseleave当鼠标指针移出元素时触发
onmouseover鼠标移到某元素之上。
onmouseout鼠标从某元素移开。

文档内容来自菜鸟教程

以下列嵌套容器为例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        .external {
            width: 600px;
            height: 600px;
            background-color: red;
            margin: 0 auto;
        }

        .interval {
            width: 300px;
            height: 300px;
            background-color: black;
        }
    </style>
</head>
<body>
<div class="external">
    <div class="interval">
    </div>
</div>

<script type="text/javascript">
    let external = document.getElementsByClassName('external')[0]
    external.onmouseenter = function () {
      console.log('父-enter')
    }
    external.onmouseleave = function () {
      console.log('父-leave')
    }
    external.onmouseout = function () {
      console.log('父-out')
    }
    external.onmouseover = function () {
      console.log('父-over')
    }
</script>
</body>
</html>

 

所有事件都绑定到父元素中,它们之间的关系为:

  • onmouseenter、onmouseleave:鼠标只有在父元素与外界之间移入移出才会触发。即当第一次从外界移入父元素时触发onmouseenter事件,接着再移入子元素时不触发;从子元素中移除到父元素时也不触发onmouseleave事件,直到移出父元素到达外界才触发。
  • onmouseover、onmouseout:鼠标在父元素和子元素中都会触发。

图例:

根据这几个事件的特性,可实现以下功能,如图所示: 

 

 代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>示例</title>
    <style type="text/css">
        .external {
            width: 600px;
            height: auto;
            background-color: red;
            margin: 0 auto;
        }

        .external1 {
            background-color: #003cff;
        }

        .btn {
            float: right;
            margin: 10px;
            visibility: hidden;
        }

        .btn1 {
            visibility: visible;
        }

        .btn2 {
            background-color: #28c121;
        }
        .clear {
            clear: both;
        }
    </style>
</head>
<body>
<div class="external">
    <button type="button" class="btn">按钮</button>
    <div class="clear"></div>
</div>

<script type="text/javascript">
    /**
     * 添加样式类名
     * @param obj 目标元素
     * @param cn 指定的样式类
     */
    function addClass (obj, cn) {
      // 先判断是否含有该样式类,有则加进去,没有则不加
      if(!hasClass(obj, cn)){
        obj.className += ' ' + cn
      }
    }

    /**
     * 判断是否含有指定的样式类
     * @param obj 目标元素
     * @param cn 指定的样式类
     * @returns {boolean} true表示有;false表示没有;
     */
    function hasClass (obj, cn) {
      // 定义正则表达式
      const reg = new RegExp("\\b" + cn + "\\b")
      // 判断是否含有传进来的样式类
      return reg.test(obj.className)
    }

    /**
     * 删除指定的样式类
     * @param obj 目标元素
     * @param cn 指定样式类
     */
    function removeClass (obj, cn) {
      // 定义正则表达式
      const reg = new RegExp("\\b" + cn + "\\b")
      // 删除class
      obj.className = obj.className.replace(reg, "")
    }

    // 获取元素
    let external = document.getElementsByClassName('external')[0]
    let btn = document.getElementsByClassName('btn')[0]

    // 设置监听函数
    external.onmouseenter = function () {
      // 给容器添加样式
      addClass(external, "external1")
      // 给按钮添加样式
      addClass(btn, "btn1")
    }
    external.onmouseleave = function () {
      // 删除样式
      removeClass(this, "external1")
      removeClass(btn, "btn1")
    }
    btn.onmouseenter = function () {
      // 添加样式
      addClass(this, "btn2")
    }
    btn.onmouseleave = function () {
      // 删除样式
      removeClass(this, "btn2")
    }
</script>
</body>
</html>

 

 

Python驱动COMSOL自动化:从数据生成到DNN代理模型部署全流程解析 本文详细解析了如何利用Python驱动COMSOL实现全流程自动化,从参数化建模、批量仿真数据生成,到训练深度神经网络(DNN)代理模型并部署应用。该方案通过自动化闭环解放工程师生产力,并利用代理模型实现秒级性能预测,极大提升了多物理场仿真优化与设计探索的效率。 阅读详情

相关推荐

Habitat安装全网最详细教程,手把手带你跑通example.py(全网唯一)

全网最详细具身智能仿真平台habitat的安装教程

shannanshouyin的博客 2756

onMouseEnter,onMouseLeave,onMouseOver,onMouseOut的区别

onMouseEnter:当鼠标移入指定区域的时候触发,但是不支持冒泡,进入或者离开子组件都不触发。onMouseLeave:当鼠标移出指定区域的时候触发,但是不支持冒泡,进入或者离开子组件都不触发。onMouseEnter:当鼠标移入指定区域的时候触发,支持冒泡,进入或者离开子组件触发。onMouseLeave:当鼠标移出指定区域的时候触发,支持冒泡,进入或者离开子组件触发。

qq_41051239的博客 1317

Win10环境借助DockerDesktop部署Open web UI集成DeepSeek

Win10环境借助DockerDesktop部署Open web UI集成DeepSeek,并借助DuckDuckGo实现联网查询

虎鲸不是鱼 1700

鼠标事件 onmouseover、onmouseenter、onmouseleave和onmouseout

触发时机: onmouseout:鼠标滑出 onmouseover:鼠标滑过(在表面经过即可) onmouseenter:鼠标进入(进入到里面) onmouseleave:鼠标离开 onmouseover 和 onmouseenter 的区别: onmouseover 和 onmouseout 存在冒泡机制 onmouseenter 和 onmouseleave 不存在 1、打开页面时,鼠标刚好在这个元素上,会触发 onmouseover,不会触发 onmouseenter 2、onmouseover

qq_24917475的博客 4319

[特殊字符] 智能补货(AI-driven Replenishment)完整实施方案

补货量=预测需求+安全库存−当前库存补货量 = 预测需求 + 安全库存 - 当前库存补货量=预测需求+安全库存−当前库存。:基于 LSTM/Transformer 预测未来 30/60/90 天的销量。

nbsaas-boot基于Request-Response的企业级快速开发框架 967

【Java微服务-医疗管理项目】(附源码+资料+教程)

尚医疗是专门为各大医院、门诊提供的一款医疗管理平台。 系统包含:系统管理、药品进销存管理、看病就诊、收费管理、检查管理、数据统计等核心模块。 通过尚医疗系统可以快速、方便的管理病人从挂号到门诊结束所涉及到的全套流程。也可以清晰明了的体现出药品进货、出售的所有记录。.........

m0_72882572的博客 2203

onmouseenter与onmouseleave事件

onmouseenter 事件在鼠标指针移动到元素上时触发。 onmouseenter 事件在鼠标指针离开元素上时触发。 常用于显示二维码等功能 应用: &lt;button class="u-btn-sq" onmouseenter="j_OutBox_on('j-bubOpenBox')" onmouseleave="j_close_off('j-bubOpenBox')" type...

supershuyun的博客 3803

Android 编译系统(Build System)剖析

make是一种自动化构建工具,通过读取Makefile将源代码自动编译为可执行程序和库文件。

虎哥LoveDroid 2169

onMouseEnter和onMouseOver区别

是两个在 JavaScript 中用于处理鼠标事件的不同事件。根据你的具体需求,选择合适的事件来实现相应的功能。

weixin_63681863的博客 973

YOLOv5源码逐行超详细注释与解读(5)——配置文件yolov5s.yaml

全网最详细的YOLOv5源码解读之配置文件yaml。逐行注释,逐句讲解,一文带你了解yaml。小白必看!

路人贾的博客 1万+

Flow Matching03-01:微分方程【微分方程(描述变化规律的方程):包含未知函数和它的导数的方程】【公式解(精确)、数值解(逼近)】

好的,我将从数学角度详细解释Flow Matching,从高中生能理解的基础知识开始,逐步深入到高级概念。

u013250861的博客 219

JS事件之onmouseover 、onmouseout 与onmouseenter 、onmouseleave区别

onmouseover 、onmouseout 与onmouseenter 、onmouseleave这些事件的区别 首先我们都知道onmouseover和onmouseenter都属于鼠标进入的状态,onmouseout和onmouseleave都是鼠标移开的状态,那么我们来看看主要区别。   一般来说,onmouseover、onmouseout一起使用,鼠标经过时自身触发事...

qq_34412985的博客 1249

手把手教你学simulink(40.1)--水力发电场景示例:基于 Simulink 的抽水蓄能电站水力发电

项目背景抽水蓄能电站是一种重要的储能技术,广泛应用于电力系统的调峰填谷、频率调节和备用电源。它通过在电力负荷低谷时将水从下水库抽到上水库储存,在电力负荷高峰时释放水进行发电,从而实现电能的高效利用。与传统的水电站不同,抽水蓄能电站可以在短时间内快速响应电网的需求,具有良好的灵活性和可靠性。本项目旨在使用 MATLAB/Simulink 模拟一个完整的抽水蓄能电站的水力发电过程,包括水泵-涡轮机系统、发电机、水道系统、控制系统等,并实现对电站的精确控制,确保其在不同工况下都能稳定运行。

MHD0815的博客 886

JS事件:onmouseover 、onmouseout 与onmouseenter 、onmouseleave的区别

1、onmouseover、onmouseout:鼠标经过时自身触发事件,经过其子元素时也触发该事件;(父亲有的东西,儿子也有) 2、onmouseenter、onmouseleave:鼠标经过时自身触发事件,经过其子元素时不触发该事件。(父亲的东西就是父亲的,不归儿子所有) 这四个事件两两配对使用,onmouseover、onmouseout一对,onmouseenter、onmouselea

liujian573281的博客 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

鼠标mouse事件冒泡处理:onmouseover 、onmouseout 与onmouseenter 、onmouseleave的区别

简单的鼠标移动事件: 进入 mouseenter:不冒泡 mouseover: 冒泡 不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件 只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件 移出 mouseleave: 不冒泡 mouseout:冒泡 不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件 只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件 总结: 使用 mouseenter和 mouseleave 不会受子元素影响而

liu_chenglong的博客 5774

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

vue中onmouseenter、onmouseleave、onmouseover、onmouseout的区别

vue中onmouseenter、onmouseleave、onmouseover、onmouseout的区别一、onmouseenter、onmouseleave二、onmouseover和onmouseout 一、onmouseenter、onmouseleave onmouseenter和onmouseleave是一组:当鼠标进入指定区域的时候触发,但是不支持冒泡,进入或者离开子组件都不触发 下图中,onmouseenter和onmouseleave相当于绑定的区域为A+B 二、onmouseove

丑小鸭变黑天鹅的博客 1916

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

onmouseover、onmouseenter、onmouseleave、onmouseout的区别

1、onmouseover、onmouseout:鼠标经过时自身触发事件,经过其子元素时也触发该事件,支持冒泡。 2、onmouseenter、onmouseleave:鼠标经过时自身触发事件,经过其子元素时不触发该事件,不支持冒泡。 3、onmouseover、onmouseenter、onmouseleave、onmouseout均支持的HTML标签:    &n...

huangfuyk.的博客 4548

onmouseenter、onmouseleave 和 onmouseover、onmouseout

onmouseenter、onmouseleave 和 onmouseover、onmouseout单词及意思:enter 进入leave 离开over 越过,在...之上out 出局,外面的1、onmouseenter、onmouseleave,鼠标进入到指定元素区域内触发事件,不支持冒泡,不包含子元素的区域。2、onmouseover、onmouseout鼠标进入指定元素触发事件,含子元素区域...

有效youxiao的博客 765

JavaScript中onmouseenter、onmouseleave和onmouseover、onmouseout的区别

实例1:只有一个元素,没有子元素 实例2:如果鼠标从上到下经过全部dom元素 结果统计: 实例1中【onmouseenter、onmouseleave】、【onmouseover、onmouseout】事件各触发1次事件处理程序。 实例2中【onmouseenter、onmouseleave】事件触发1次事件处理程序,【onmouseover、onmouseout】事件会触发10次事件...

yuyongkun4519的博客 657

onmouseout跟onmouseleave的区别是什么?

 使用onmouseleave,为什么鼠标移进去之后横着放会移走不会变回原来的颜色?而onmouseout却不会? 区别:onmouseover、nmouseout:鼠标移动到自身时候会触发事件,同时移动到其子元素身上也会触发事件   onmouseenter、onmouseleave:鼠标移动到自身是会触发事件,但是移动到其子元素身上不会触发事件...

ViewDa的博客 1万+

onmouseleave、onmouseenter与onmouseout、onmouseover

1、onmouseleave、onmouseenter,鼠标进入到指定元素区域内触发事件,不支持冒泡,不包含子元素的区域。 2、onmouseout、onmouseover、鼠标进入指定元素触发事件,含子元素区域。

webDDDD的博客 332

Vue中 onmouseenter,onmouseleave,onmouseover,onmouseout的区别

今天在学Vue视频的时候,提到了这四个触发事件,我就想做下笔记: 1.onmouseenter和onmouseleave是一组:当鼠标进入指定区域的时候触发,但是不支持冒泡,进入或者离开子组件都不触发 下图中,onmouseenter和onmouseleave相当于绑定的区域为A+B 2.onmouseover和onmouseout是一组:当鼠标进入指定区域的时候触发,进入或者...

Guo1111122的博客 3357
上一篇: JS 创建对象(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式,寄生构造函数模式,稳妥构造函数模式)
下一篇: JS 基础知识巩固(JS面试宝典-全面透彻)
狗都不敲代码
博客等级 码龄4年 7粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值