- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 jquery 来幻灯片放映和隐藏文本。使用下面的 css 代码隐藏文本,
.mainContent>.imageInfo:nth-child(1){
display:none;
}
.mainContent>.imageInfo:nth-child(2)
{
display:none;
}
.mainContent>.imageInfo:nth-child(3){
display:none;
}
.mainContent>.imageInfo:nth-child(4){
display:none;
}
悬停的元素应该显示该元素的左下角文本 block 。
$( ".colContainer > .mainContent:nth-child(n)" ).hover(function () {
var $sel=$(".mainContent>.imageInfo:nth-child(" +( $(this).index() + 1)+")");
if ( $sel.is( ":hidden" ) ) {
$sel.slideDown( "slow" );console.log("hid");
} else {
$sel.hide();console.log("show");
}
});
但是,正如 gif 所示,当我将鼠标悬停在前两个元素上时没有任何反应,而当我将鼠标悬停在第三个元素上时,它应该会显示自己的文本;不过它会显示所有左下角的文本 block 。
代码, https://jsfiddle.net/Debra321/j9kkx4no/127/
欢迎和赞赏任何评论。
*我已经确认这不是由打字错误等微不足道的错误引起的。
我的观察是有 2 个问题:一个是 $sel.hide 被错误调用,即使该元素现在已经隐藏。二是第三项选择器以某种方式显示每个文本 block 。悬停时,console.log 打印消息。
最佳答案
如以下代码所述,这在 CSS 中最容易实现。
尽管适用于移动网站/应用程序;悬停不是很好的交互,因为您不能在手机上悬停。
它在 jQuery 中不起作用,因为 var $sel = $(".mainContent>.imageInfo:nth-child("+ ($(this).index() + 1) + ")");
; nth-child
选择器应该位于 .mainContent
而不是 .imageInfo
。
.imageInfo
将始终是 .mainContnet
中的第三个子级,这就是为什么只有当您将鼠标悬停在第三个图 block (index
是 2,nth-child
是 index+1
,即 3)。
所以可以写成 var $sel = $(".mainContent:nth-child("+ ($(this).index() + 1) + ")>.imageInfo");
(function() {
var dataObj =
`{
"widget": {
"story": {
"subtitle": "My",
"maintitle": "Story",
"desc": "A life as a daughter, sister and programer.",
"image": "http://gdurl.com/USQR",
"imageinfo":"Hsinchu",
"spriteiconpos":"0 0",
"url": "#"
},
"work": {
"subtitle": "Working",
"maintitle": "Experience",
"desc": "Learning, Studying and Training.",
"image": "http://gdurl.com/USQR",
"imageinfo":"San Francisco",
"spriteiconpos":"-80px 0",
"url": "#"
},
"interests": {
"subtitle": "Personal",
"maintitle": "Interests",
"desc": "Paint life with colors of interests.",
"image": "http://gdurl.com/USQR",
"imageinfo":"Quebec",
"spriteiconpos":"0 -80px",
"url": "#"
},
"goals": {
"subtitle":"Future",
"maintitle":"Goals",
"desc": "Do not just survive.",
"image": "http://gdurl.com/USQR",
"imageinfo":"Quebec",
"spriteiconpos":"-80px -80px",
"url": "#"
}
}
}`;
var dataObj = $.parseJSON(dataObj);
var dataArray = $.map(dataObj["widget"], function(value, index) {
return [value];
});
var htmlCode = "";
for (var i in dataArray) {
var cssAttr = "";
var cssSelect = "";
//html
htmlCode += "<div class='mainContent'>";
htmlCode += "<div class='mainCol'>";
htmlCode += "<h2>" + dataArray[i].subtitle + "</h2>";
htmlCode += "<h1>" + dataArray[i].maintitle + "</h1>";
htmlCode += "<p>" + dataArray[i].desc + "</p>";
htmlCode += "</div>";
htmlCode += "<i class='i-caretRight'></i>";
htmlCode += "<div class='imageInfo'>" + dataArray[i].imageinfo + "</div>";
htmlCode += "</div>";
//css
cssAttr = "background: url(http://gdurl.com/USQR) " + dataArray[i].spriteiconpos + " no-repeat";
cssSelect = ".colContainer > .mainContent:nth-child(" + (parseInt(i) + 1) + "):before";
var sheet = document.styleSheets[0];
var rules = sheet.rules;
document.styleSheets[0].addRule(cssSelect, cssAttr, rules.length);
}
$("#phoneContent .colContainer").html(htmlCode);
})();
@import url('https://fonts.googleapis.com/css?family=Allura|Habibi|Asar');
html {
box-sizing: border-box;
}
body {
background: #fcfca4;
background: linear-gradient(to top right, #F3E9D2, #EC9192);
background-repeat: no-repeat;
background-attachment: fixed;
position: relative;
}
#phoneContent {
position: absolute;
top: 17.7%;
left: 50px;
width: 253px;
height: 455px;
display: block;
margin: auto;
overflow: hidden;
}
#mainPhoneContent {
top: 0;
height: 90%;
position: relative;
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
background: #c7c4be url(http://gdurl.com/ist4) repeat;
}
.phoneToolBar {
position: absolute;
bottom: 0;
width: 100%;
height: 10%;
left: 0;
background: black;
}
#phoneContent .colContainer {
width: 100%;
height: 110%;
display: flex;
top: 15%;
flex-direction: column;
position: absolute;
background: white;
-webkit-box-shadow: 4px 7px 50px 21px rgba(0, 0, 0, 0.41);
-moz-box-shadow: 4px 7px 50px 21px rgba(0, 0, 0, 0.41);
box-shadow: 4px 7px 50px 21px rgba(0, 0, 0, 0.41);
}
.colContainer>.mainContent {
flex: 1;
position: relative;
background: #f1efe4;
overflow: hidden;
background: linear-gradient(to bottom, #f0f0e5, #e7e5da);
}
.mainContent>.imageInfo {
position: absolute;
left: 1%;
bottom: -100%;
width: 35%;
height: 23%;
text-align: center;
font-family: Allura, serif;
font-size: 1rem;
color: black;
transition: bottom linear 0.2s;
}
.mainContent:hover>.imageInfo {
bottom: 1%;
}
.mainContent>.mainCol {
left: 40%;
width: 50%;
height: 100%;
position: absolute;
}
.mainCol>h2 {
font-family: 'Habibi', serif;
color: #ff7519;
font-size: 1rem;
}
.mainCol>h1 {
font-family: 'Habibi', serif;
color: black;
font-size: 1.5rem;
margin-top: -12%;
}
.mainCol>p {
margin-top: -10%;
font-family: Georgia, serif;
font-size: 0.7rem;
font-style: italic;
line-height: 1.45;
color: #383838;
}
.colContainer>.mainContent:nth-child(n) {
position: relative;
}
.colContainer>.mainContent:nth-child(n):hover {
background: #ffffff;
cursor: pointer;
}
.colContainer>.mainContent:nth-child(n):before {
position: absolute;
top: 5%;
left: 2%;
content: "";
float: left;
width: 80px;
height: 80px;
}
.mainContent>i {
position: absolute;
content: "";
right: 3%;
top: 40%;
width: 20px;
height: 20px;
}
.mainContent>i:before {
position: absolute;
top: 50%;
width: 100%;
height: 2px;
background: #b8b7b0;
content: "";
transform-origin: right top;
-ms-transform-origin: right top;
/* IE 9 */
-webkit-transform-origin: right top;
/* Safari and Chrome */
-moz-transform-origin: right top;
/* Firefox */
-o-transform-origin: right top;
/* Opera */
transform: rotate(-45deg);
}
.mainContent>i:after {
position: absolute;
top: 50%;
width: 100%;
height: 2px;
background: #b8b7b0;
content: "";
transform-origin: right bottom;
-ms-transform-origin: right bottom;
/* IE 9 */
-webkit-transform-origin: right bottom;
/* Safari and Chrome */
-moz-transform-origin: right bottom;
/* Firefox */
-o-transform-origin: right bottom;
/* Opera */
transform: rotate(45deg);
}
.st0 {
fill: none;
stroke: #FFFFFF;
stroke-miterlimit: 10;
}
.st1 {
fill: none;
stroke: #DBDDDD;
stroke-miterlimit: 10;
}
.st2 {
fill: #FFFFFF;
}
.st3 {
fill: none;
stroke: #E5E5E5;
stroke-miterlimit: 10;
}
.st4 {
opacity: 0.3;
fill: none;
stroke: #FFFFFF;
stroke-miterlimit: 10;
}
#myPhone {
position: relative;
width: 350px;
height: 700px;
display: block;
margin: auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<body>
<div id="myPhone">
<div id="phonediv">
<svg version="1.1" id="phone" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 250 500" style="enable-background:new 0 0 250 500;" xml:space="preserve">
<g>
<path class="st0" d="M21,104.5c0,1.4-1.1,2.5-2.5,2.5l0,0c-1.4,0-2.5-1.1-2.5-2.5v-18c0-1.4,1.1-2.5,2.5-2.5l0,0
c1.4,0,2.5,1.1,2.5,2.5V104.5z"/>
<path class="st0" d="M21,143.5c0,1.4-1.1,2.5-2.5,2.5l0,0c-1.4,0-2.5-1.1-2.5-2.5v-18c0-1.4,1.1-2.5,2.5-2.5l0,0
c1.4,0,2.5,1.1,2.5,2.5V143.5z"/>
<path class="st0" d="M21,182.5c0,1.4-1.1,2.5-2.5,2.5l0,0c-1.4,0-2.5-1.1-2.5-2.5v-18c0-1.4,1.1-2.5,2.5-2.5l0,0
c1.4,0,2.5,1.1,2.5,2.5V182.5z"/>
</g>
<path class="st0" d="M200.5,23.3H53.7c-22.6,0-35.1,15.2-35.1,34.4v387.9c0,21.4,16.6,35.1,35.1,35.1h146.8
c19.7,0,34.4-15.9,34.4-35.1V57.7C234.9,38.5,221.9,23.3,200.5,23.3z M217.6,414.6H35.1V87.2h182.5V414.6z"/>
<path class="st0" d="M200.5,476.2H53.7c-14.7,0-30.6-11.7-30.6-30.6V57.7c0-17,13.2-29.9,30.6-29.9h146.8
c16.7,0,29.9,13.1,29.9,29.9v387.9C230.4,461.6,216.1,476.2,200.5,476.2z M53.7,28.6c-17,0-29.9,12.5-29.9,29.1v387.9
c0,20.4,17.8,29.9,29.9,29.9h146.8c15.2,0,29.1-14.2,29.1-29.9V57.7c0-16.3-12.8-29.1-29.1-29.1H53.7z"/>
<circle class="st1" cx="127.1" cy="445.2" r="19.9"/>
<g>
<path class="st2" d="M127.1,427.1c10.4,0,18.9,8.5,18.9,18.9c0,10.4-8.5,18.9-18.9,18.9c-10.4,0-18.9-8.5-18.9-18.9
C108.2,435.6,116.7,427.1,127.1,427.1 M127.1,426.1c-11,0-19.9,8.9-19.9,19.9c0,11,8.9,19.9,19.9,19.9c11,0,19.9-8.9,19.9-19.9
C147,435,138.1,426.1,127.1,426.1L127.1,426.1z"/>
</g>
<path class="st3" d="M131.2,453.6h-9c-1.7,0-3-1.4-3-3v-9c0-1.7,1.4-3,3-3h9c1.7,0,3,1.4,3,3v9C134.2,452.3,132.9,453.6,131.2,453.6
z M122.2,439.4c-1.2,0-2.3,1-2.3,2.3v9c0,1.2,1,2.3,2.3,2.3h9c1.2,0,2.3-1,2.3-2.3v-9c0-1.2-1-2.3-2.3-2.3H122.2z"/>
<path class="st0" d="M146,50.5c0,1.4-1.1,2.5-2.5,2.5h-35c-1.4,0-2.5-1.1-2.5-2.5l0,0c0-1.4,1.1-2.5,2.5-2.5h35
C144.9,48,146,49.1,146,50.5L146,50.5z"/>
<line class="st4" x1="34.5" y1="87" x2="217" y2="87"/>
</svg>
</div>
<div id="phoneContent">
<div id="mainPhoneContent">
<div class="colContainer">
</div>
<!--colContainer-->
</div>
<div class="phoneToolBar"></div>
</div>
<!--phoneContent-->
</div>
</body>
关于javascript - jQuery 的意外行为被隐藏并向下滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42646037/
这是在我的 MainActivity 中用作 BroadcastReceiver 的代码 mRegistrationBroadcastReceiver = new BroadcastRecei
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我想在大部分时间隐藏 UISearchBar,只在用户需要时调用它来显示。 我在 Interface Builder 中放置了一个 UISearchBar 并将其隐藏在 View 后面,当用户单击按钮
我有一个包含 CCMenuItemImage 的菜单(“myMenu”)。我希望此菜单能够检测手指滑动并相应地滑动。 我的问题是 CCMenuItemImage 似乎吸收了触摸事件。当用户触摸 CCM
我正在寻找一个简单的 jQuery 或 Javascript 解决方案,以使导航侧边栏在用户向下滚动页面时顺利跟随用户。像这里一样:http://ucon-acrobatics.com/shop/ 任
我有一个 ListView 控件来显示项目,我想提供一个滑动/滑动手势来选择一个项目。我用 GestureRecognizer类来识别交叉滑动手势,但我还想通过水平移动选择的项目来为这个手势设置动画。
我想将 String 行标记化为标记(存储到 String 表中),并且我只能使用 java.io.*它是为了实现一个计算器。 例如:第一行:1+2+3第二行:1+ 2*3(标记之间有空格) 进入表{
我有一个 ListView 控件来显示项目,我想提供一个滑动/滑动手势来选择一个项目。我用 GestureRecognizer类来识别交叉滑动手势,但我还想通过水平移动选择的项目来为这个手势设置动画。
我有一个导航栏,当单击菜单图标时,它将滑入“#secondary-nav”并隐藏“#primary-nav”。然而 jquery 似乎没有显示“#secondary-menu”。下面提供的是 HTMl
这个问题已经有答案了: how to make a sliding up panel like the Google Maps app? (2 个回答) 已关闭 7 年前。 我正在寻找类似的实现,如下
我有 ViewPager(Slide) 和 3 张图片。共有三个图像是通过 Internet 下载的。如果我将图片换到服务器上的另一台服务器上,链接保持不变,但应用程序中的图片没有改变,仍然是缓存中的
我在 gridview 中创建了两个按钮。 我想达到以下目的,但不知道应该用什么方法? 首先我触摸第一个按钮,将显示 toast 1 msg。通过将我的手指滑到第二个按钮而不抬起我的手指,将显示 to
所以我设置了一个小的 jquery 动画,用户将鼠标悬停在容器上一段时间,这会导致容器 split ,然后显示内部信息。 我不希望鼠标一进入容器就开始动画,所以我在动画上放了一个delay()。现在动
这个问题在这里已经有了答案: Simulate swipe with mouse in javascript (5 个答案) 关闭 7 年前。
我希望我的 Sprite 像在冰上一样滑动。因此,如果他在地面上,那么他可以正常行走,但当他接触冰时,他会滑动,直到有东西阻止他。有谁知道如何才能做到这一点?谢谢 最佳答案 像“Sprite Move
我的代码有几个问题:HTML: Bellevue
我正在尝试实现从 fragment1 过渡到 fragment2 的滑动动画。我正在使用 setCustomAnimations 方法。而且我知道我需要使用框架方法来替换 fragment 。 我的代
我不知道你们是否听说过 app chomp,但应用程序中有一个布局,如下图所示。我想知道他们是如何设置的,我将如何使用它来为我自己的应用程序制作类似的东西。有趣的是,当你滑动时,没有像水平 Scrol
我想检测用户何时在一个单元格占据整个屏幕宽度的 collectionView 中向左或向右滑动。是否可以不添加手势识别器。我试过添加手势识别器,但只有当我们将 collectionView 的 scr
我正在尝试开发一个应用程序来复制类似 tinder 的基于滑动的提要。该应用程序的想法与火种非常相似,也具有向右滑动和向左滑动匹配功能。 到目前为止我做了什么-我在 MongoDB 中创建了一个刷卡集
我是一名优秀的程序员,十分优秀!