- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想用一些轮廓包裹元素(比如捕获),每当悬停它时它(轮廓)应该在鼠标移出它时移除,我尝试了一些见下面的代码
function getFocussed(obj) {
var $obj = $(obj);
var wr1 = $('<div class="ad-wr1"></div>');
var wr2 = $('<div class="ad-wr2"></div>');
var width = parseInt($obj.css('width'));
var height = parseInt($obj.css('height'));
$(wr1).css('width', width + 12);
$(wr2).css('width', width + 16);
$(wr1).css('height', height + 12);
$(wr2).css('height', height + 14);
$obj.wrap(wr1).wrap(wr2);
}
function getUnFocussed(obj) {
$(obj).parent().unwrap();
$(obj).unwrap();
}
现在我调用这些函数来获得专注和不专注。
$('input[type="text"], div').hover(function () {
if(!ad_focused) {
ad_focused = true;
getFocussed($(this));
}
}, function() {
if(ad_focused) {
getUnFocussed($(this));
ad_focused = false;
}
});
});
在下面的 html 元素上
<input style="width: 300px; height: 20px;" class="txt" type="text" />
它工作正常(参见 http://jsfiddle.net/ashokdamani/8ppc5pq0/1/)!
但是它会在聚焦时影响其他元素,或者它也不能与某些边距属性(样式)一起正常工作(参见 http://jsfiddle.net/ashokdamani/8ppc5pq0/2/ )。
我知道这里有一些 css 问题,但我无法修复,有人可以帮忙吗?
基本上,我希望每当任何聚焦的元素都被其 Angular 上的轮廓包裹起来,而不会干扰布局或其他元素。谢谢
最佳答案
首先,您是在请求悬停(鼠标悬停)还是焦点解决方案?尤其是在输入字段上 - 这是两个不同的东西 - 您可以将焦点放在输入字段中,并将鼠标悬停在另一个字段上。
我喜欢你的想法,即创建两个叠加层,一个是白色的圆 Angular ,一个是黑色的,以创建所需的效果。但我不喜欢在 js 中创建元素,所以我只是操纵了 css 属性。
我试图找到一个解决方案,它可以应用于页面的每个元素 - 至少是悬停效果。焦点将仅适用于可聚焦元素(如输入字段)
我将所有内容都包装在我自己的内容容器中。要使 z-index 正常工作,您需要将“悬停”元素置于与悬停叠加层相同的节点级别:
<div class="contentContainer">
<input class="inputText focusable" name="myName" type="text" />
<input class="inputText focusable" name="myData" type="text" />
<div class="hoverDark"></div>
<div class="hoverLight"></div>
<div class="focusDark"></div>
<div class="focusLight"></div>
</div>
“focusable”类不会获得任何 .css 标记。它只用于通过js选择那些元素,应该得到叠加效果。由于最多可以有两种叠加效果 - 一种焦点和一种鼠标悬停,我需要四个 div。
接下来我们得到 css 标记。对于输入字段,我选择了position:relative。所以我不需要用它自己独特的绝对位置来定位每个字段。为了让 z-index 正常工作,position 必须是静态的! overlay-divs 有一些属性,不会改变。这些也固定在 css 中。
.inputText {
position: relative;
top:0;
left: 0;
width: 300px;
height: 20px;
margin: 3px;
padding: 2px;
z-index: 10;
}
.hoverDark, .hoverLight, .focusDark, .focusLight {
position: absolute;
z-index: 5;
}
.hoverDark {
border: 1px solid grey;
}
.focusDark {
border: 1px solid black;
}
.hoverLight, .focusLight {
border: 1px solid white;
border-radius: 10px;
}
您会错过叠加层的顶部/左侧和宽度/高度。它们是通过js设置的。这样,您可以在完整的表单、文本区域、单选按钮等上使用效果...
最后,js。首先,我开始隐藏叠加的 div,以避免页面上出现 1px 的黑点。不幸的是,如果您通过 css 将可见性设置为隐藏,.show() 将不起作用。所以需要前四行。
$(".hoverDark").hide();
$(".hoverLight").hide();
$(".focusDark").hide();
$(".focusLight").hide();
接下来我们将鼠标悬停处理程序绑定(bind)到所有元素,类为“focusable”。[.hover()]/http://api.jquery.com/hover/ ) 可用于在其自身内定义 mousein 和 mouseout 事件,这就是此处使用它的原因。当然,第一个函数是针对 mousein 处理程序的。我们从获取悬停元素的尺寸(包括边距、填充和边框)和位置开始。由于位置总是从 0 开始,我们必须减去 1px 来定义叠加层的目标位置,使悬停元素正确居中。
$(".focusable").hover(function () {
var elemOuterWidth = $(this).outerWidth(true);
var elemOuterHeight = $(this).outerHeight(true);
var elemPos = $(this).position();
var elemPosTop = elemPos.top - 1;
var elemPosLeft = elemPos.left - 1;
设置好这些变量后,我们将位置、宽度和高度应用于我们的悬停叠加层
$(".hoverDark").css({
"width": elemOuterWidth,
"height": elemOuterHeight,
"top": elemPosTop,
"left": elemPosLeft
});
$(".hoverLight").css({
"width": elemOuterWidth,
"height": elemOuterHeight,
"top": elemPosTop,
"left": elemPosLeft
});
很简单,不是吗?我们现在需要做的就是显示我们的叠加层。 .stop() 用于防止将鼠标移到可聚焦区域上时出现闪烁。
$(".hoverDark").stop(true, true).show();
$(".hoverLight").stop(true, true).show();
就是这样。哦不...我忘了,我们需要 mouseout 处理程序。嗯,这很简单:
}, function () {
$(".hoverDark").stop(true, true).hide();
$(".hoverLight").stop(true, true).hide();
});
我真的不知道,如果这里需要停靠点,只需复制和粘贴就可以了。毕竟,现在在我的国家凌晨 3 点,我变得懒惰和疲倦......
focusin/focusout 功能基本相同,悬停 - 只使用我的 focusDark,focusLight div,而不是悬停......
在此处查看实际效果:http://jsfiddle.net/nmkr0k6o/4/将鼠标悬停在灰色覆盖层上,单击进入黑色覆盖层...
关于jquery - 使用 css 和 jquery 包装 html 元素,例如捕获( Angular 落处的边框),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25309087/
正在尝试创建一个 python 包。似乎有效,但我收到警告。我的 setup.py 是: #! /usr/bin/env python from distutils.core import setup
我导入了一个数据类型 X ,定义为 data X a = X a 在本地,我定义了一个通用量化的数据类型,Y type Y = forall a. X a 现在我需要定义两个函数, toY 和 fro
我似乎无法让编译器让我包装 Tokio AsyncRead: use std::io::Result; use core::pin::Pin; use core::task::{Context, Po
我有两个函数“a”和“b”。当用户上传文件时,“b”被调用。 “b”重命名文件并返回新文件名。之后应该编辑该文件。像这样: def a(): edits file def b(): r
我使用 Entity Framework 作为我的 ORM,我的每个类都实现了一个接口(interface),该接口(interface)基本上表示表结构(每个字段一个只读属性)。这些接口(inter
有没有办法打开一个程序,通常会打开一个新的jframe,进入一个现有的jframe? 这里是解释,我下载了一个java游戏,其中一个是反射游戏,它在一个jframe中打开,框架内有一堆子面板,我想要做
我想要下面的布局 | AA BBBBBBB | 除非没有足够的空间,在这种情况下 | AA | | BBBBBBB | 在这种情况下,A 是复选框,B 是复选框旁边的 Text
我正在尝试以不同的方式包装我的网站,以便将背景分为 2 部分。灰色部分是主要背景,还有白色部分,它较小并包装主要内容。 基本上我想要this看起来像this . 我不太确定如何添加图像来创建阴影效果,
我正在使用 : 读取整数文件 int len = (int)(new File(file).length()); FileInputStream fis = new FileInputStream(f
我使用 maven 和 OpenJDK 1.8 打包了一个 JavaFX 应用程序我的 pom.xml 中的相关部分: maven-assembly-plugin
我正在使用两个不同的 ItemsControl 来生成一个按钮列表。
我有一个情况,有一个变量会很方便,to , 可以是 TimerOutput或 nothing .我有兴趣提供一个采用与 @timeit 相同参数的宏来自 TimerOutputs(例如 @timeit
我正在尝试包装一个名为 content 的 div与另一个具有不同背景的 div。 但是,当将“margin-top”与 content 一起使用时div,似乎包装 DIV 获得了边距顶部而不是 co
文档不清楚,它似乎允许包装 dll 和 csproj 以在 Asp.Net Core 5 应用程序中使用。它是否允许您在 .Net Core 5 网站中使用针对 .Net Framework 4.6
我被要求开发一个层,该层将充当通用总线,而不直接引用 NServiceBus。到目前为止,由于支持不引人注目的消息,这并不太难。除了现在,我被要求为 IHandleMessages 提供我们自己的定义
我正在尝试包装 getServersideProps使用身份验证处理程序函数,但不断收到此错误:TypeError: getServerSideProps is not a function我的包装看
我有一个项目,它在特定位置(不是/src/resources)包含资源(模板文件)。我希望在运行 package-bin 时将这些资源打包。 我看到了 package-options 和 packag
我正在寻找打印从一系列对象中绘制的 div。我可以通过使用下面的管道语法来实现这一点。 each i, key in faq if (key == 0) |
我在 Meteor.js“main.js - Server”中有这个方法。 Meteor.methods({ messageSent: function (message) { var a
我注意到,如果我的自定义Polymer 1.x元素的宽度比纸张输入元素上的验证错误消息的宽度窄,那么错误将超出自定义元素的右边界。参见下图: 有没有一种机制可以防止溢出,例如在到达自定义元素的边界时自
我是一名优秀的程序员,十分优秀!