c:target标签的使用

定价表是显示信息并帮助用户区分可用选项的一种非常有效的方法。 最终,价格表可以将过往访问者转化为有价值的客户,因此,重要的是我们考虑他们在不同的屏幕和设备上的工作方式。

我们将制作一个可变的定价表,然后使用媒体查询来更改其在不同视口大小下的显示方式。 让我们开始吧!


选择响应式CSS框架

我们将依靠现有的框架来整理网格度量和媒体查询。 这不是至关重要的,但是可以节省我们一些时间。

我们在这里有两个选择,最根本的是在自适应和响应式布局之间。

  • 自适应布局:使用媒体查询,我们将在一系列固定布局之间切换,(原则上)完美地适用于每种设备窗口大小。 但这是不灵活的,有时可能会导致布局在不同的窗口大小之间显示不正确。
  • 响应式布局:使用流体基础,将以百分比指定元素宽度,而不是固定的像素(或em)值。 这为我们提供了更大的灵活性,可以在可能会出现的任何设备尺寸上进行显示,并使将来的工作变得更加友好。

我更喜欢使用Skeleton框架来创建响应式设计,但是默认的Skeleton框架使用了一系列固定布局。 相反,在整个教程中,我将使用Ian Yates的流畅版本的Skeleton 。


第1步:标记桌面屏幕

传统上,在为台式机或笔记本电脑设计时,我们将960px作为标准宽度。 为了简便起见,这就是我们要跳到这里的方式-因此,让我们看看如何为更大的屏幕设计定价表。

<!DOCTYPE html>
<!--[if lt IE 7 ]><html class="ie ie6" lang="en"><![endif]-->
<!--[if IE 7 ]><html class="ie ie7" lang="en"><![endif]-->
<!--[if IE 8 ]><html class="ie ie8" lang="en"><![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--><html lang="en"><!--<![endif]-->
<head>
<meta charset="utf-8">
<title>Responsive Pricing Table</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" type="text/css"  href="css/base.css">
<link rel="stylesheet" type="text/css"  href="css/layout.css">
<link rel="stylesheet" type="text/css"  href="css/fluid_skeleton.css">
<link rel="stylesheet" type="text/css"  href="css/pricing_table.css">
</head>
<body>
<div class="container">
<div id='pricing_plan1' class="four columns">
<dl class='plans' >
<dd class="plan_title">
Basic
</dd>
<dd class="plan_price">
$9.99
</dd>
</dl>
<dl class='plan' id="one">
<dt class='plan_more'>View<a href="#one" class="more_icon"></a><a href="#" class="less_icon"></a></dt>
<dd class="plan_features">
<div class="feature_desc"><span class="highlight">1GB</span> Storage</div>
</dd>
<dd class="plan_features">
<div class="feature_desc"><span class="highlight">5GB</span> Bandwidth</div>
</dd>
<dd class="plan_features">
<div class="feature_desc"><span class="highlight">2</span> Domains</div>
</dd>
<dd class="plan_features">
<div class="feature_desc"><span class="highlight">3</span> Databases</div>
</dd>
<dd class="plan_features">
<div class="feature_desc"><span class="highlight">1</span> FTP Account</div>
</dd>
<dd class="plan_features">
<div class="feature_desc"><span class="highlight">25</span> Email Accounts</div>
</dd>
<dd class="plan_buy">
<a href='' class='buy' >Buy Now</a>
</dd>
</dl>
</div>
</div>
</body>
</html>

最初,我们必须为Skeleton Framework提供所有必需CSS文件,为定价表提供自定义样式。

在此模型中,我仅将HTML包含在定价表的一部分中(所有其他相似)。 您必须为您的元素创建一个容器。 在Skeleton中,您可以将类container分配给所有主要容器。 所有列都应放在该元素内。

Skeleton将主容器分为16列。 我已经为4个定价包分别使用了4列-使用类为four columns的div进行检查。

对于数据,我使用了一个简单的描述列表来显示定价包功能。


第2步:大屏幕CSS

让我们添加一些基本样式来改善定价表的外观:

.plan_features:nth-child(odd){
background: none repeat scroll 0 0 #F7F7F7;
font-size: 13px;
font-weight: bold;
padding: 10px 5px;
}
.plan_features:nth-child(even){
background: none repeat scroll 0 0 #fff;
font-size: 13px;
font-weight: bold;
padding: 10px 5px;
}
.plan_price{
color: #FFFFFF;
font-size: 35px;
font-weight: bold;
padding: 30px;
text-align: center;
}
#pricing_plan1 .plan_price,#pricing_plan1 .buy{
background: none repeat scroll 0 0 #B71A1A;
border-top: 1px solid #F83333;
}
#pricing_plan2 .plan_price,#pricing_plan2 .buy{
background: none repeat scroll 0 0 #1A7BB7;
border-top: 1px solid #4BA3FF;
}
#pricing_plan3 .plan_price,#pricing_plan3 .buy{
background: none repeat scroll 0 0 #2D964B;
border-top: 1px solid #5AD540;
}
#pricing_plan4 .plan_price,#pricing_plan4 .buy{
background: none repeat scroll 0 0 #909092;
border-top: 1px solid #B1ACAC;
}

第一个块为数据行设置交替的斑马条纹样式,为每个包装提供独特的配色方案并设置一些印刷规则。

.plan_title{
background: none repeat scroll 0 0 #000000;
border-radius: 3px 3px 0 0;
color: #FFFFFF;
font-family: helvetica;
font-size: 20px;
font-weight: bold;
padding: 20px;
text-align: center;
text-shadow: 1px 1px 1px #5E5858;
}
.plan{
border:1px solid #eee;
margin-bottom: 15px;
}
.plan_buy{
background: none repeat scroll 0 0 #000000;
border-radius: 0 0 3px 3px;
padding: 20px;
}
.plan_buy a{
border-radius: 4px 4px 4px 4px;
color: #FFFFFF;
display: block;
font-size: 15px;
font-weight: bold;
margin: auto;
padding: 10px 5px;
text-align: center;
text-decoration: none;
width: 90px;
}
.plan_more{
background: none repeat scroll 0 0 #fff;
font-size: 13px;
font-weight: bold;
padding: 10px 5px;
display: none;
border-left: 2px solid #302C2C;
border-right: 2px solid #302C2C;
border-bottom: 2px solid #302C2C;
}
.more_icon{
background-image: url("../plus_minus_icons.png");
background-position: 25px -3px;
float: right;
height: 25px;
width: 25px;
}
.more_icon:hover{
cursor: pointer;
}
.less_icon{
background-image: url("../plus_minus_icons.png");
background-position: 0px -3px;
float: right;
height: 25px;
width: 25px;
}
.less_icon:hover{
cursor: pointer;
}
.plan_features img{
float:left;
}
.feature_desc{
color: #4E4E4E;
font-family: arial;
text-align: center;
}
.highlight{
color: #333233;
font-family: helvetica;
font-size: 15px;
font-weight: bold;
}

剩下的样式很漂亮,但是还处理了一些我们将在较小的屏幕上使用的图标。 如您所见, .plan_more display: none; 设置,因此即使我们在其中设置了图标的样式,它也不会在较大的屏幕尺寸上显示。

下图显示了定价表在大屏幕上的显示方式。


步骤3:为平板电脑设计

开始根据设备定义屏幕尺寸是很危险的(事实是,我们永远无法确定要使用哪种设备来查看我们的页面),但是通常情况下,平板电脑的屏幕宽度在768像素至959像素之间。 为了适应这个假设,我们将编写一个媒体查询来处理必要的样式。

在当前状态下,演示将在宽度减小的平板电脑屏幕上完美显示。 因此,我不会为平板电脑编写任何自定义样式。 在我们的Skeleton框架中,平板电脑的媒体查询部分将如下所示(有点空白):

/* #Tablet (Portrait)
================================================== */
/* Note: Design for a width of 768px */
@media only screen and (min-width: 768px) and (max-width: 959px) {
}

下图显示了定价表在“平板电脑”屏幕上的显示方式:


第4步:人像移动屏幕

好的,因此我们为较大的屏幕设计了价格表。 现在,我们来看看纵向移动屏幕,它的大小与本教程中要担心的一样小。 由于宽度约为320像素,因此即使屏幕上只有一个包装,我们也无法完全显示。 我们将必须根据以下内容为小屏幕规划不同的布局:

  • 将定价包的价格和标题转换为一行,而不是两行。
  • 隐藏所有功能并显示“查看功能”导航面板。
  • 单击“查看功能”按钮后,使用CSS技术显示功能列表。

首先,让我们看一下我们在步骤1中列出的价格表的初始HTML结构。还记得在默认的宽屏视图中隐藏有类plan_more的部分吗? 我们将其用作“视图特征”导航。

查看宽度介于320像素至767像素之间的屏幕样式:

@media only screen and (min-width: 320px) and (max-width: 767px) {
.plan_title{
width:45%;
float:left;
border-radius:3px 0 0 0;
}
.plan_price{
width:55%;
padding:20px 2%;
border-top:none !important;
float:left;
}
.plan_more{
display: block;
clear: both;
}
.plan_buy{
padding: 10px;
}
.plan > dd {
height: 0;
overflow: hidden;
padding:0 !important;
opacity: 0;
filter: alpha(opacity=0); /* IE6-IE8 */
-webkit-transition: opacity 0.9s ease-in-out;
-moz-transition: opacity 0.9s ease-in-out;
-o-transition: opacity 0.9s ease-in-out;
-ms-transition: opacity 0.9s ease-in-out;
transition: opacity 0.9s ease-in-out;
}
.plan:target > dd{
padding: 10px 5px !important;
height: auto;
opacity: 1;
filter: alpha(opacity=100); /* IE6-IE8 */
}
}

我们为标题和价格元素分配自定义宽度,并设置float: left以便将两个部分都转换为单行。 然后,通过将display:block分配给plan_more类来显示“视图要素”部分。 它将包含用于打开和关闭功能的加号和减号图标。

一旦用户单击加号图标,我们就必须滑动功能列表并显示在屏幕上。 即使使用jQuery可以轻松完成,我们仍将寻找基于CSS的解决方案来避免脚本。

我将使用Ian Yates在快速提示:Orman's Navigation中的:target Treatment演示CSS技术。 首先,我们将所有要素的高度设置为0以隐藏它们。 然后,我们分配一些特定于浏览器CSS过渡代码来获得滑动效果。

单击加号按钮后,我们可以使用URL中的片段标识符获取目标元素。 通过设置高度,我们在单击的包装上显示特征。 简单。

现在,当您切换到较小的移动屏幕时,将获得带有每个包装的标题和价格的布局。 使用加号和减号按钮显示和隐藏功能。

下图显示了使用导航按钮展开功能时如何显示它们:


步骤5:横向移动

再次说明一下,但假设移动设备的横向布局在480px和767px之间指定。 由于我们使用的是基于列的布局,因此我们的定价表可以在移动横向屏幕上正确显示,而无需执行任何更改。 看一看:

如您所见,一个包裹以全角显示。 我们真的不需要单个软件包有这么大的空间。 这是响应式设计中需要考虑的另一重要事项。 首先,我们要确保可以浏览所有内容而无需滚动。 然后,我们需要优化布局以提供扎实的用户体验。

原则上,此横向移动宽度可以包含我们定价表的两个软件包。 因此,让我们在用于横向移动版式的媒体查询部分中使用一些CSS

@media only screen and (min-width: 480px) and (max-width: 767px) {
#pricing_plan4,#pricing_plan3,#pricing_plan2,#pricing_plan1{
width: 50%;
}
.plan_title{
width:auto;
float:none;
border-radius: 3px 3px 0 0;
}
.plan_price{
width:auto;
float:none;
border-top: 1px solid #F83333;
}
.plan_more{
display: none;
}
.plan > dd {
padding: 10px 5px !important;
height:auto;
opacity: 1;
filter: alpha(opacity=1); /* IE6-IE8 */
-webkit-transition: opacity 0.9s ease-in-out;
-moz-transition: opacity 0.9s ease-in-out;
-o-transition: opacity 0.9s ease-in-out;
-ms-transition: opacity 0.9s ease-in-out;
transition: opacity 0.9s ease-in-out;
}
}

我们为定价包提供了50%的宽度,因此我们将能够查看两个包,而不是默认布局中的一个包。

我为计划价格和计划标题使用了一些自定义样式,但要注意的重要一点是浮点数设置为none。 最初,我们没有任何浮动元素,但是在Portrait Mobile移动版式中,我们需要对其进行设置。 这用于清除横向移动屏幕上的那些浮动。

我们不希望此布局中的“查看功能”部分。 因此,在plan_more类上使用display:none隐藏该部分。

然后,我们需要自动显示功能。 使用上一节中介绍CSS技术,为所有功能提供自动高度。

那就这样! 我们已经为具有不同屏幕尺寸的不同设备完成了布局设计。 您应该具有如下所示的内容:


<div><table>

在您当中,最精明的人会注意到,即使我们正在处理表格数据,我们也使用了基于div的布局和描述列表。 我们可以用一个响应表设计在本教程中,如克里斯Coyier在演示很容易地走了这篇文章 。

当然,我们应该考虑使设计具有响应性,但是我们也应该考虑设计中使用的数据类型。 通常,相关数据显示在表行中; 我们通过读取一行来获取有关实体的信息。 但是,在我们的方案中,相关数据显示在单个列中 。 如果我们要使用一张桌子,然后使用克里斯的响应技术来显示它,我们将得到如下所示的布局:

所有价格都显示在包装名称的顶部。 然后,显示每个包装的存储容量以及包装名称。 因此,要获取有关任何单个软件包的信息,您必须滚动到末尾。 考虑到这种情况,我选择不进行基于表的设计。


结语

在整个教程中,我们学习了如何创建适合所有设备的自适应定价表。 感谢您的阅读,并通过自适应价格表祝您好运!

翻译自: https://webdesign.tutsplus.com/tutorials/responsive-pricing-tables-using-target-for-small-screens--webdesign-9034

c:target标签的使用

c:target标签的使用_使用:target的响应式定价表,用于小屏幕相关推荐

  1. java响应式网页设计_基于HTML5的响应式网站的设计与实现(论文).docx

    毕业论文 基于HTML5的响应式网站的设计与实现 摘 要 随着网络的发展和普及,各类建站技术的更新与运用,现在搭建一个网站的时间和成本越来越低,使得企业官方网站得到了极大的发展.从早期简单的网页展示, ...

  2. 响应式轮播_角度2的响应式轮播组件

    响应式轮播 Update (March 22, 2016): Provided a Demo Link which is available on PlunkerUpdate (March 21, 2 ...

  3. vue 数组删除 dome没更新_详解Vue响应式原理

    摘要: 搞懂Vue响应式原理! 作者:浪里行舟 原文:深入浅出Vue响应式原理 Fundebug经授权转载,版权归原作者所有. 前言 Vue 最独特的特性之一,是其非侵入性的响应式系统.数据模型仅仅是 ...

  4. 前端基础7:a标签常用方法和元素居中方式,响应式@media

    a标签 a标签作用 锚点 语法:href="#+指定位置" a标签href属性的属性值为相应要跳转到的元素id属性名前加# <a href="#top"& ...

  5. html自适应布局_三分钟学会响应式布局和自适应布局

    响应式布局和自适应布局详解 响应式布局等于流动网格布局,而自适应布局等于使用固定分割点来进行布局. 自适应布局给了你更多设计的空间,因为你只用考虑几种不同的状态.而在响应式布局中你却得考虑上百种不同的 ...

  6. 正则表达式 懒人_懒人的响应式排版指南

    正则表达式 懒人 排版可以说是任何网站设计中最重要的部分. 空白页上巨大的标题可能看起来像一个极简主义者的梦想,但当我们开始为越来越小的设备开始缩小页面时会发生什么? 嗯!!! 一切都破裂了,看起来糟 ...

  7. pc显示器分辨率 前端_@media 响应式PC端媒体查询屏幕分辨率尺寸总结

    最近在写一个PC端的活动页面,想让页面适配不同的分辨率,既然提出了这样的需求,那么我们就要去尽量满足.因为之前一直写的是固定版心,然后在将容器居中,这样写的话,就导致页面在低分辨屏幕下会出现横向的滚动 ...

  8. 媒体查询响应式布局的几个尺寸_媒体查询实现响应式布局

    本文主要介绍 @media 查询的使用.通过媒体查询,在不同的屏幕尺寸下,可以设置不同的样式.以此,可以完美解决不同屏幕适配的问题.话不多说,先来看看效果: CSS @media screen and ...

  9. Java中printmax的调用形式_媒体类型和响应式设计

    一.媒体类型: 常用的三种为:all,print和screen 二.媒体类型引用方法:link标签,xml方式,@import和css3新增的@media四种 link方法: link方法引入媒体类型 ...

最新文章

  1. 短短的 RESTful API 设计规范
  2. idea bookmark 怎么用
  3. gst-rtsp-server编译测试
  4. 码农们不得不重视的问题
  5. numpy 笔记 view,copy和numpy的运行速度
  6. R语言:常用函数总结
  7. springboot接收文件_SpringBoot2.x系列教程61--SpringBoot整合MQ之ActiveMQ实现消息传递
  8. BlockJUnit4ClassRunner
  9. 【CodeForces - 616C 】The Labyrinth点石成金(并查集,dfs)
  10. Java调试打印复杂对象
  11. Linux -- ×××服务简绍、配置及应用(2)
  12. sql 差值_SQL_LeetCode的连续性题目
  13. unistd.h中定义函数
  14. 数字信号处理实验一 T3
  15. UltraEdit注册机
  16. 数据分析实战项目练习——物流行业数据分析
  17. JAVA中多态的理解
  18. 基于SSM的校园运动会管理系统
  19. 牛人的博客(图像处理,机器视觉,机器学习等)
  20. Hive Sql 分析实例: 淘宝消费者行为分析

热门文章

  1. SQL视图(转自http://www.cnblogs.com/fineboy/archive/2005/09/14/236731.html)
  2. 洛谷—— P3353 在你窗外闪耀的星星
  3. 教师计算机培训网站,教师计算机培训材料..pdf
  4. shutterstock/123rf 素材接口无水印解析
  5. Codesys仿真通讯威纶通触摸屏
  6. 计算机 游戏第14关,《帕拉世界》第十四关至第十六关攻略秘籍
  7. matlab误差分析报告,误差理论与数据处理实验报告
  8. OpenMP与C++:事半功倍地获得多线程的好处(上)
  9. 如何执行一个py文件_4个步骤教你学会用Pycharm如何运行.py文件,简单上手(建议收藏)...
  10. doccano(NLP标签)使用