php输入框美化,WordPress为input输入框文本添加烟花特效

前几天有小伙伴问小雨,评论输入框的特效是怎么弄的,今天抽空写个教程吧:

其实很简单,把下面代码添加到 footer.php 里面,需要放在 body 结束标签之前哦!

POWERMODE.colorful = true; // make power mode colorful

POWERMODE.shake = false; // turn off shake

document.body.addEventListener('input', POWERMODE);

然后将下面代码保存为 input.js 放到主题对应的 js 文件夹就可以啦!

(function webpackUniversalModuleDefinition(root, factory) {

if(typeof exports === 'object' && typeof module === 'object')

module.exports = factory();

else if(typeof define === 'function' && define.amd)

define([], factory);

else if(typeof exports === 'object')

exports["POWERMODE"] = factory();

else

root["POWERMODE"] = factory();

})(this, function() {

return /******/ (function(modules) { // webpackBootstrap

/******/ // The module cache

/******/ var installedModules = {};

/******/ // The require function

/******/ function __webpack_require__(moduleId) {

/******/ // Check if module is in cache

/******/ if(installedModules[moduleId])

/******/ return installedModules[moduleId].exports;

/******/ // Create a new module (and put it into the cache)

/******/ var module = installedModules[moduleId] = {

/******/ exports: {},

/******/ id: moduleId,

/******/ loaded: false

/******/ };

/******/ // Execute the module function

/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);

/******/ // Flag the module as loaded

/******/ module.loaded = true;

/******/ // Return the exports of the module

/******/ return module.exports;

/******/ }

/******/ // expose the modules object (__webpack_modules__)

/******/ __webpack_require__.m = modules;

/******/ // expose the module cache

/******/ __webpack_require__.c = installedModules;

/******/ // __webpack_public_path__

/******/ __webpack_require__.p = "";

/******/ // Load entry module and return exports

/******/ return __webpack_require__(0);

/******/ })

/************************************************************************/

/******/ ([

/* 0 */

/***/ function(module, exports, __webpack_require__) {

'use strict';

var canvas = document.createElement('canvas');

canvas.width = window.innerWidth;

canvas.height = window.innerHeight;

canvas.style.cssText = 'position:fixed;top:0;left:0;pointer-events:none;z-index:999999';

window.addEventListener('resize', function () {

canvas.width = window.innerWidth;

canvas.height = window.innerHeight;

});

document.body.appendChild(canvas);

var context = canvas.getContext('2d');

var particles = [];

var particlePointer = 0;

POWERMODE.shake = true;

function getRandom(min, max) {

return Math.random() * (max - min) + min;

}

function getColor(el) {

if (POWERMODE.colorful) {

var u = getRandom(0, 360);

return 'hsla(' + getRandom(u - 10, u + 10) + ', 100%, ' + getRandom(50, 80) + '%, ' + 1 + ')';

} else {

return window.getComputedStyle(el).color;

}

}

function getCaret() {

var el = document.activeElement;

var bcr;

if (el.tagName === 'TEXTAREA' ||

(el.tagName === 'INPUT' && el.getAttribute('type') === 'text')) {

var offset = __webpack_require__(1)(el, el.selectionStart);

bcr = el.getBoundingClientRect();

return {

x: offset.left + bcr.left,

y: offset.top + bcr.top,

color: getColor(el)

};

}

var selection = window.getSelection();

if (selection.rangeCount) {

var range = selection.getRangeAt(0);

var startNode = range.startContainer;

if (startNode.nodeType === document.TEXT_NODE) {

startNode = startNode.parentNode;

}

bcr = range.getBoundingClientRect();

return {

x: bcr.left,

y: bcr.top,

color: getColor(startNode)

};

}

return { x: 0, y: 0, color: 'transparent' };

}

function createParticle(x, y, color) {

return {

x: x,

y: y,

alpha: 1,

color: color,

velocity: {

x: -1 + Math.random() * 2,

y: -3.5 + Math.random() * 2

}

};

}

function POWERMODE() {

{ // spawn particles

var caret = getCaret();

var numParticles = 5 + Math.round(Math.random() * 10);

while (numParticles--) {

particles[particlePointer] = createParticle(caret.x, caret.y, caret.color);

particlePointer = (particlePointer + 1) % 500;

}

}

{ // shake screen

if (POWERMODE.shake) {

var intensity = 1 + 2 * Math.random();

var x = intensity * (Math.random() > 0.5 -1 : 1);

var y = intensity * (Math.random() > 0.5 -1 : 1);

document.body.style.marginLeft = x + 'px';

document.body.style.marginTop = y + 'px';

setTimeout(function() {

document.body.style.marginLeft = '';

document.body.style.marginTop = '';

}, 75);

}

}

};

POWERMODE.colorful = false;

function loop() {

requestAnimationFrame(loop);

context.clearRect(0, 0, canvas.width, canvas.height);

for (var i = 0; i < particles.length; ++i) {

var particle = particles[i];

if (particle.alpha padding,

// so we have to do every single property specifically.

var properties = [

'direction', // RTL support

'boxSizing',

'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does

'height',

'overflowX',

'overflowY', // copy the scrollbar for IE

'borderTopWidth',

'borderRightWidth',

'borderBottomWidth',

'borderLeftWidth',

'borderStyle',

'paddingTop',

'paddingRight',

'paddingBottom',

'paddingLeft',

// https://developer.mozilla.org/en-US/docs/Web/CSS/font

'fontStyle',

'fontVariant',

'fontWeight',

'fontStretch',

'fontSize',

'fontSizeAdjust',

'lineHeight',

'fontFamily',

'textAlign',

'textTransform',

'textIndent',

'textDecoration', // might not make a difference, but better be safe

'letterSpacing',

'wordSpacing',

'tabSize',

'MozTabSize'

];

var isFirefox = window.mozInnerScreenX != null;

function getCaretCoordinates(element, position, options) {

var debug = options && options.debug || false;

if (debug) {

var el = document.querySelector('#input-textarea-caret-position-mirror-div');

if ( el ) { el.parentNode.removeChild(el); }

}

// mirrored div

var div = document.createElement('div');

div.id = 'input-textarea-caret-position-mirror-div';

document.body.appendChild(div);

var style = div.style;

var computed = window.getComputedStyle getComputedStyle(element) : element.currentStyle; // currentStyle for IE parseInt(computed.height))

style.overflowY = 'scroll';

} else {

style.overflow = 'hidden'; // for Chrome to not render a scrollbar; IE keeps overflowY = 'scroll'

}

div.textContent = element.value.substring(0, position);

// the second special handling for input type="text" vs textarea: spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037

if (element.nodeName === 'INPUT')

div.textContent = div.textContent.replace(/\s/g, "\u00a0");

var span = document.createElement('span');

// Wrapping must be replicated *exactly*, including when a long word gets

// onto the next line, with whitespace at the end of the line before (#7).

// The *only* reliable way to do that is to copy the *entire* rest of the

// textarea's content into the created at the caret position.

// for inputs, just '.' would be enough, but why bother

span.textContent = element.value.substring(position) || '.'; // || because a completely empty faux span doesn't render at all

div.appendChild(span);

var coordinates = {

top: span.offsetTop + parseInt(computed['borderTopWidth']),

left: span.offsetLeft + parseInt(computed['borderLeftWidth'])

};

if (debug) {

span.style.backgroundColor = '#aaa';

} else {

document.body.removeChild(div);

}

return coordinates;

}

if (typeof module != "undefined" && typeof module.exports != "undefined") {

module.exports = getCaretCoordinates;

} else {

window.getCaretCoordinates = getCaretCoordinates;

}

}());

/***/ }

/******/ ])

});

;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 要美化HTML文本输入框,可以使用CSS样式来改变其外观。可以使用border属性来设置边框样式,padding属性来设置内边距,border-radius属性来设置边框的圆角,box-shadow属性来设置阴影效果。可以使用transition属性来设置过渡效果,使得输入框在获取焦点时有动画效果。可以使用:focus伪类来设置输入框获取焦点时的样式。\[1\]此外,还可以使用placeholder属性来设置输入框的占位符文本,可以使用::-webkit-input-placeholder、::-moz-placeholder、:-moz-placeholder和:-ms-input-placeholder伪类来分别设置不同浏览器下的占位符文本样式。\[2\]如果想要实现更复杂的效果,可以使用JavaScript来动态改变输入框的样式。\[3\] #### 引用[.reference_title] - *1* [html页面输入框input美化](https://blog.csdn.net/weixin_35391606/article/details/117781931)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [HTML+CSS 主页面美化的详细过程及全部代码(美化导航栏+文本框+按钮)](https://blog.csdn.net/Rover95/article/details/118967794)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [HTML/css文本框样式美化代码](https://blog.csdn.net/weixin_28767599/article/details/117783505)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值