如何在 jQuery 中使用变量进行计算?

2023-12-31

我正在创建一个程序,允许用户更改 div 的大多数 CSS 属性。不过,我需要将其居中,我通常使用下面的 CSS 代码来实现此目的。

div {
  position: fixed;
  background: black;
  width: 100px;
  height: 100px;
  top: calc(50% - 50px);
  right: calc(50% - 50px);
}

然而,我需要将宽度和高度设为自己的变量,然后对顶部和右侧的属性进行计算,将它们除以 2 并减去 50%。

var width = 100;
var height = 100;
var top = (height / 2);
var right = (width / 2);

$('div')
  .css('position','fixed')
  .css('background','black')
  .css('width',width + 'px')
  .css('height',height + 'px')
  .css('top','calc(50% - ' + top + 'px)')
  .css('right','calc(50% - ' + right + 'px)');

如何在使用变量作为 CSS 属性值的同时实现居中的 div?


如果你不需要支持蹩脚的 IE CSS 变量是一个选择。

CSS

  1. 在样式表中选择一个范围。选择器在 DOM 上的位置越高,它覆盖的范围就越多。在片段中我选择了尽可能最高的::root (i.e. html).
  2. 声明 CSS 变量::root --half: 50pxCSSVar 必须以 2 个破折号为前缀。在代码片段中我已经声明了--half on :root与价值50px.
  3. Next, assign CSSVar to the appropriate properties:
    • top: calc(50% - var(--half));
    • right: calc(50% - var(--half));

JavaScript

  1. 详细信息在片段中评论。

SNIPPET

// Reference the input
var A = document.getElementById('input1');

// On input event on input#A call setHalf() function
A.addEventListener('input', setHalf, false);

/* setHalf() accesses the CSS by the CSSDeclaration 
|| interface.
*/
function setHalf(e) {
  // Reference the div
  var X = document.getElementById('shape1');

  /* Get div#shape1 computedStyle in order to 
  || access it's ruleset declarations.
  */
  var Y = window.getComputedStyle(X);

  // Get the value of the CSSVar --half
  var Z = Y.getPropertyValue('--half');

  // Set --half value to the value of input#A
  X.style.setProperty('--half', this.value + 'px');
}
:root {
  --half: 50px;
}
#shape1 {
  position: fixed;
  background: black;
  width: 100px;
  height: 100px;
  top: calc(50% - var(--half));
  right: calc(50% - var(--half));
  border: 1px solid black;
}
<div id='shape1'></div>
<input id='input1' type='number' min='-150' max='150' value='50'>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 jQuery 中使用变量进行计算? 的相关文章

  • 从 Bootstrap 中删除字形

    如何从 bootstrap 3 中删除所有字形实例 看起来它已经大量嵌入到 css 文件中了 我正在努力使文件大小尽可能最小 只需简单地克隆引导程序https github com twbs bootstrap sass https git
  • Flexbox 不适用于 iPad 和 Safari [重复]

    这个问题在这里已经有答案了 我在网站上使用 Flexbox 但它在 iPad Air iPad 3 和 Safari PC 上崩溃 设计和代码与此 codepen 类似 http codepen io anon pen xwJzEg htt
  • 如何动态打破 FlexBox 列以开始新列

    I have a dynamic list of items containing text placed column wise which I need to break after every 5th item 我只有两个限制 每个
  • 如何在同一页面上使用AJAX处理多个表单

    我有一个表单 当我单击 提交 时 它就被提交了 然后该表单隐藏 操作页面的结果显示在 div 中 classname dig 它工作正常 但是当我添加另一个表单时 它停止正常工作并且所有表单同时提交 我如何更改我的代码 done click
  • Jquery 组合 SlideUp/Down 并单击

    我创建了两个脚本 其中一个具有向上滑动和向下滑动命令 这些命令在页面加载时作用于计时器 第二个是单击事件 其中单击链接时执行向上 向下滑动命令 这两个脚本都是单独工作的 但我无法让它们一起工作 这是定时向上 向下滑动脚本 document
  • CSS 中的像素与像素密度

    我对 HTML 和 CSS 非常陌生 我突然想到 当决定某个东西是 5px 时 比如说 由于像素的物理尺寸取决于密度 所以 5px 在 100 ppi 的屏幕上看起来肯定比在 300 ppi 的屏幕上看起来更大ppi 这是正确的吗 如果是
  • 每 3 秒重复一次动画

    我正在使用 WOW js 和 animate css 现在我正在将 CSS 运行到 Infinite 我想知道如何让我的课程运行 3 秒停止并再次开始到无限 My html img src images fork png class for
  • 物化模式覆盖整个页面(模式弹出窗口未带到前台)

    由于保密原因 我无法上传 Web UI 的屏幕截图 物化模态应该表现得像here http materializecss com modals html 但不幸的是 我的网站发生的情况是 包括模式在内的整个页面都是 深色背景 的一部分 模式
  • 解析“流”JSON

    我在浏览器中有一个网格 我想通过 JSON 将数据行发送到网格 但浏览器应该在接收到 JSON 时不断解析它 并在解析时将行添加到网格中 换句话说 在接收到整个 JSON 对象后 不应将行全部添加到网格中 应该在接收到行时将其添加到网格中
  • 使用 jQuery/JS 打开时使
    标签的内容具有动画效果

    我只想要 HTML5 的内容details标记为 滑行 动画打开 而不是仅仅弹出打开 立即出现 这可以用 jQuery Javascript 实现吗 Fiddle http jsfiddle net 9h4Hq HTML
  • 删除某个类之后的所有类

    我有一个 lt div id thisdiv class class1 class2 class3 class4 class5 gt text lt div gt 我需要能够使用 jQuery 删除 class3 之后的所有类 就像是 th
  • 可以使用 jQuery 或 Javascript 将图片的特定部分用作链接吗?

    我有这个想法 将图片 而不是文本 的各个部分链接到不同的页面或网站 并且我想在不实际创建不同的照片并将它们彼此靠近的情况下完成 这样看起来就像是一张完整的图片 这里有人知道如何使用 JavaScript 的变体 例如 jQuery 或纯 J
  • jquery.validate 中是否有一个函数可以像重置表单一样重置单个字段?

    我想调用 jquery 函数来手动删除单个字段中的错误并重置错误标记 是否有一个函数可以执行此操作 类似于 resetForm 函数 您可以执行以下操作来验证单个字段 your field valid 也许它会对某人有所帮助 Thanks
  • 保持未知数量的 div 居中,每行最多 4 个

    我有一个简单的问题 但我自己无法解决 简而言之 有一个未知电话我必须在页面中放置的元素数量 最多 每行 4 个元素 但仍居中 此图片给您一个提示 我为了示例而设置它 详细 在上图中我涵盖了不同的场景 例如 如果总共有 5 个元素 则应使用第
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • 如何阻止破折号自行包裹?

    我有一个标题 标题最后一个单词的末尾是一个破折号 单词和破折号之间没有空格 当浏览器窗口变小时 破折号会中断并换成新行 在自己的行上有一个破折号是不好的排版 如何停止破折号之前的换行 以便最后一个单词运行到新行 这是代码 h1 XYZ co
  • 避免响应式页面的重复内容

    我目前正在做一个涉及响应式设计的项目 整个布局应该使用HTML和CSS来实现 我知道可以使用 java 脚本将内容从一个列布局移动到另一列布局 而无需复制内容 但是使用 HTML 和 CSS 是否可以实现相同的效果 以下面的例子为例 它会在
  • FireFox 中的自动滚动

    我的应用程序是实时聊天 我有一个 Div 来包装消息 每条消息都是一个 div 所以 在几条消息之后 我的 DOM 看起来像这样 div div Message number two div div div div
  • 为什么元素上的负底部边距会降低该元素父元素的高度?

    这可能是由于边距折叠造成的 我知道边距折叠 至少知道它如何影响相邻元素 但我不明白当涉及负边距时它如何在嵌套元素上工作 例如 在此标记和随附的 CSS 中 Markup div class parent div class child Ch
  • 如何从图像输入中获取 xy 坐标?

    我有一个输入设置为图像类型

随机推荐