html图片悬停状态_用整洁的悬停状态建立响应式定价表

html图片悬停状态

在本教程中,我们将创建带有一些悬停效果的时尚定价表。 我们将使用Lea Verou的Prefixfree脚本来保持CSS整洁,此外,我们还将使整个过程具有响应性,并在几个断点处改变布局。


标记

下图显示了我们将创建的标记的可视框架。 如您所见,它不是使用表构建的。 我们使用无序列表来最大程度地提高灵活性和响应速度。

HTML标记

首先,我们需要从一个空文件开始。 这里非常重要的是视口元标记 ,该标记将允许所有设备正确解释我们的响应式布局。

<!DOCTYPE html>
<html lang="en" >
<head>
	<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>

</body>
</html>

现在,我们可以从表标记(或更确切地说是列表标记)开始:

<ul class="pricing_table">
	<li>...</li>
	
	<li class="price_block">
		<h3>Basic</h3>
		<div class="price">
			<div class="price_figure">
				<span class="price_number">$9.99</span>
				<span class="price_tenure">per month</span>
			</div>
		</div>
		<ul class="features">
			<li>2GB Storage</li>
			<li>5 Clients</li>
			<li>10 Active Projects</li>
			<li>10 Colors</li>
			<li>Free Goodies</li>
			<li>24/7 Email support</li>
		</ul>
		<div class="footer">
			<a href="#" class="action_button">Buy Now</a>
		</div>
	</li>
	
	<li>...</li>
	<li>...</li>
</ul>

<script src="prefixfree.min.js" type="text/javascript"></script>

在最底部,我们包含了prefixfree (在</body>标记之前),这使我们可以在任何地方使用未添加前缀CSS属性。 它在后台运行,仅在需要时将当前浏览器的前缀添加到任何CSS代码中。


款式

整理好标记后,让我们看一下添加一些样式。 我将在文档头的<style>标记中进行此操作,但您可以根据需要使用单独的样式表。

1.基本样式

@import url(http://fonts.googleapis.com/css?family=Ubuntu);

* {
	margin: 0; 
	padding: 0;
}
		
body {
	font-family: Ubuntu, arial, verdana;
}

首先,我们应用基本CSS重置并使用自定义字体'Ubuntu',该字体已从Google Fonts中提取。

2.定价表和价格块

.pricing_table {
	line-height: 150%; 
	font-size: 12px; 
	margin: 0 auto; 
	width: 75%; 
	max-width: 800px; 
	padding-top: 10px;
	margin-top: 100px;
}

.price_block {
	width: 100%; 
	color: #fff; 
	float: left; 
	list-style-type: none; 
	transition: all 0.25s; 
	position: relative; 
	box-sizing: border-box;
	
	margin-bottom: 10px; 
	border-bottom: 1px solid transparent; 
}

.pricing_table的宽度保持为75%,但限制为800px,因此在宽屏幕上不会占用大量空间。

我们首先要处理的是移动设备 ,因此.price_block默认情况下为100%宽,以覆盖整个可用宽度。 稍后,我们将使用媒体查询在更大的屏幕上水平地容纳更多块。

当用户在较小的屏幕上查看定价表时, .pricing_block的10px底边距会起作用 ,尤其是当某些定价块掉落并相互堆叠时。 它旨在补偿应用于下面堆叠的定价块的.price_title的负10px顶部保证金。 您将在下一节中详细了解10px负边距。

.pricing_block的1px透明边框创建了一个装订线,有助于分隔不同的内容块。

.price_block也设置为具有position: relative; 因此,将框阴影应用于悬停效果时,可以在悬停的块上使用z-index,以使其阴影出现在附近的元素上方。

3.价格上涨

.pricing_table h3 {
	text-transform: uppercase; 
	padding: 5px 0; 
	background: #333; 
	margin: -10px 0 1px 0;
}

价目表的最高边际利润为-10px。 这会导致.price_block的内容向上移动,以便将它们显示在阴影上方,从而给人以亮光的感觉。

4.价格标签

现在,用于实际显示定价详细信息的部分。

.price {
	display: table; 
	background: #444; 
	width: 100%; 
	height: 70px; 
}
.price_figure {
	font-size: 24px; 
	text-transform: uppercase; 
	vertical-align: middle; 
	display: table-cell;
}
.price_number {
	font-weight: bold; 
	display: block;
}
.price_tenure {
	font-size: 11px; 
}

需要注意的一点是,价格标签垂直居中对齐。 对于可能没有任期的价格(例如,免费),这是必需的。

.price设置为具有display: table; 并将其直接子.price_figure设置为display: table-cell; vertical-align: middle; 达到效果。

.price_figure充当.price_number.price_tenure的容器,因此它们可以垂直居中对齐为单个单元。

5.特点

.features {
	background: #DEF0F4; 
	color: #000;
}
.features li {
	padding: 8px 15px;
	border-bottom: 1px solid #ccc; 
	font-size: 11px; 
	list-style-type: none;
}

6.页脚和操作按钮

.footer {
	padding: 15px; 
	background: #DEF0F4;
}
.action_button {
	text-decoration: none; 
	color: #fff; 
	font-weight: bold; 
	border-radius: 5px; 
	background: linear-gradient(#666, #333); 
	padding: 5px 20px; 
	font-size: 11px; 
	text-transform: uppercase;
}

7.悬停效果

.price_block:hover {
	box-shadow: 0 0 0px 5px rgba(0, 0, 0, 0.5); 
	transform: scale(1.04) translateY(-5px); 
	z-index: 1; 
	border-bottom: 0 none;
}
.price_block:hover .price {
	background:linear-gradient(#DB7224, #F9B84A); 
	box-shadow: inset 0 0 45px 1px #DB7224;
}
.price_block:hover h3 {
	background: #222;
}
.price_block:hover .action_button {
	background: linear-gradient(#F9B84A, #DB7224); 
}

悬停效果将涉及三个方面:

  • 颜色更改 -.price.action_button的背景颜色从深灰色更改为橙​​黄色渐变。 此外, .price还具有嵌入的橙色阴影以增强色彩效果。
  • 阴影 -基本的5px半透明阴影。
  • 使用CSS3变换向上移动缩放 -悬停的.price_block缩放到104%,并向上移动5px。

.price_table已经应用了CSS3过渡,这使悬停更改成为平滑的动画。

如果希望默认突出显示其中一个价格,也可以将这些悬停效果用作活动状态。 您需要做的就是向价格块之一添加一个活动类,然后将鼠标悬停样式移动/复制到其中。


添加媒体查询

我们将采用一种简单的方法来使定价表响应。 由于这些部分使用基于%的宽度,因此它们已经很流畅了,因此我们要做的就是控制在不同屏幕尺寸下可见的水平块的数量。

  • <480像素 -显示1个块(这是我们的默认设置)
  • 480px-768px-显示2个区块
  • 768px + -显示所有4个块

这些断点纯粹是根据此设计的视觉效果定义的。 让我们在其他样式下添加媒体查询。

@media only screen and (min-width : 480px) and (max-width : 768px) {
	.price_block {width: 50%;}
	.price_block:nth-child(odd) {border-right: 1px solid transparent;}
	.price_block:nth-child(3) {clear: both;}
	
	.price_block:nth-child(odd):hover {border: 0 none;}
}
@media only screen and (min-width : 768px){
	.price_block {width: 25%;}
	.price_block {border-right: 1px solid transparent; border-bottom: 0 none;}
	.price_block:last-child {border-right: 0 none;}
	
	.price_block:hover {border: 0 none;}
}

对于480px-768px的视口范围,我们将每个定价块的宽度设为50%。 这将有效地将它们堆叠成两行。 .price_block:nth-child(3) {clear: both;}确保即使在悬停状态改变了所有大小的情况下,第三个块也清除了前两个块。 我们还在.price_block (奇数个)上设置了1px的右边框,以在左侧和右侧的价格块之间创建垂直装订线。

对于768像素及以上的像素,我们将每个块的宽度设置为25%,从而得到四行。 除了最后一个价格块,我们还在所有价格块的右侧设置边框,以创建与上述相同的垂直装订线。


结论

凭借流畅的布局,一些简单的样式和几个断点,我们构建了一个简洁CSS3定价表。 希望您能从中受益!

翻译自: https://webdesign.tutsplus.com/articles/build-a-responsive-pricing-table-with-neat-hover-states--webdesign-12037

html图片悬停状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值