Web开发实例教程:如何创建多列布局

印刷行业使用多列排版已经好多年了,网页设计师也非常青睐这种排版模式。窄栏更适于读者阅读,随着显示区域变得越来越宽,开发人员也一直在找寻合适的列宽。毕竟,与在整页报纸上一行一行的阅读相比,谁也不愿意在显示器上从左到右的查看多行文本。在过去的十年中,出现过一些巧妙的解决方案来应对此问题,但是没有一个解决方案可以像CSS3规范提供的方法那样简单易懂。

◇  分栏

AwesomeCo每个月都会出版一份简报发给员工。公司使用了流行的web电子邮件系统。基于电子邮件的简报并不漂亮而且难于维护。公司曾决定将简报放在内网的网站上,并计划通过电子邮件将简报的链接发送给所有员工。简报的页面原型如下图所示。

宣传部门的新主管有印刷行业的工作背景,她要求简报看起来更像真正的报纸,使之分两栏而不是一栏显示内容。

如果你尝试过div加浮动的方式实现文本多栏显示,就会理解这种做法的难处。其最大的问题在于需要手工确定拆分文本的位置。在排版软件(如工nDesign )中,我们可以将文本框“链接”起来,以便当一个文本框被内容填满的时候,文本会进入与之相“链接”的文本区域。目前,Web领域尚无类似的实现机制,但有其他简单易用的方法。我们可以取某个页面元素,拆分其内容为多列,使每一列具有相同的宽度。

编写简报所需的标记都是相当基础的HTML代码。因为简报内容会在写好后变动,所以在简报还没有正式发布前,先用占位文本来代替其真实内容。你可能会疑惑为什么我们不使用section等新的HTML标签来实现,这是因为在IE浏览器中,我们的兼容方案无法与之兼容。

改为两列显示仅需要添加如下代码到样式表中:

下图所示的效果看起来更好了。我们可以为其加入更多的内容,浏览器会自动判断如何均

匀地分列折行。注意,浮动的元素仍然浮动在列旁边而不是包含在列里。

◇  回退

IE8及其以下版本不支持CSS3的分栏显示,所以我们使用j Query的Columnizer插件一1一来实现兼容方案。借助Columnizer插件,我们可以把内容均匀地拆分为多列,代码如下:

没有开启JavaScript支持的用户只能看到单列显示的文本内容,但他一样可以阅读内容,因为与显示内容相关的标签是以线性方式组织的,所以代码适用于这种场景。我们可以通过JavaScript检测浏览器是否支持特定元素。如果检索已存在的CSS属性,则返回布尔值true‘。如果返回值是null,则说明相应的CSS属性不可用。

检查浏览器是否支持分栏显示,如果不支持,则使用插件。

刷新一下IE浏览器,可以看到两栏简报的效果。如下图所示,页面看起来也许还不完美,所以需使用CSS或JavaScript调整看上去不协调的元素,这些问题我留给你来处理。

文中的条件语句,我们能够针对特定版本的IE浏览器做特殊处理。

把文章分为多栏显示会提高文章的易读性。不过,文章较长时,用户可能不喜欢每次还要拖回最上方才能阅读下一栏。因此,请小心使用分栏。

本文由尚学堂在线学习平台www.sxt.cn提供,转载请注明出处。

时间: 2024-10-14 09:01:57

Web开发实例教程:如何创建多列布局的相关文章

web开发实例教程:使用placeholder属性进行提示

客户端完成加载页面时,将光标定位到表单的第一个表单域上能够提高用户输入数据的速度.许多搜索引擎通过JavaScript实现了这个功能,而现在,HTML提供了自动聚焦功能,并将其视为语言的一部分. 要使用HTML的自动聚焦功能,你只需在任意表单域中添加autofocus属性即可. 浏览器会把用户光标定位到最后一个设置了autofocus属性的表单域上. 回退 仅需少量JavaScript代码即可检测出是否存在autofocus属性,如果用户浏览器不支持 autofocus属性,则可使用jQuerv

Web开发入门教程:Pycharm轻松创建Flask项目

Web开发入门教程:Pycharm轻松创建Flask项目 打开Pycharm的file,选择创建新的项目,然后弹出对话框,我们可以看到里面有很多的案例,Flask.Django等等,我们选择生成Flask的demo程序 选择创建之后一个简易的Flask项目就出现在我们眼前,第一个是入口程序,还有一个static的静态目录,templates是模板存放的位置 我们可以手动来启动这个Flask项目,但是这不是很理智的,在Pycharm上面有个run,我们可以选择run来启动Flask的服务,默认打开

SpringMVC+Spring3+hibernate4 开发环境搭建以及一个开发实例教程

刚刚接触了SpringMVC这个框架,因此有必要把它拿过来同hibernate.Spring框架进行集成和开发一个实例,在真正企业从头开发的项目中往往一个稳定的开发环境至关重要,开发一个项目选择什么样的搭建平台也需要有经验才可以,并不是说你会搭建一个开发平台然后公司就会用你搭建的开发平台,一个项目或者一个公司看中的也不是你可以搭出框架,而是在这个框架使用过程中出现的各种问题你可以解决掉. 也就是说呢,无论开发什么项目要做到稳定.环境稳定.开发成本稳定.技术稳定.换句话说就是"风险可控"

《Python3 bottle Web开发系列教程》

<Python3 bottle Web开发系列教程——前言> http://blog.91duofanli.com/opensource/%E3%80%8APython3+bottle+Web%E5%BC%80%E5%8F%91%E7%B3%BB%E5%88%97%E6%95%99%E7%A8%8B%E2%80%94%E2%80%94%E5%89%8D%E8%A8%80%E3%80%8B bottle web开发环境搭建 http://blog.91duofanli.com/opensourc

开机动画 看图学Android---Android 开发实例教程五

Android实例图解教程目录 http://blog.csdn.net/wyx100/article/details/45061407 在<开发一个新的android界面.界面跳转 看图学Android---Android 开发实例教程三.四>基础完成开机动画,开机界面的图片,在5.5秒内逐渐消失,显示主界面. 只修改StartActivity.java中代码以下部分 StartActivity.java源代码 package com.example.helloword; import an

适合0基础的web开发系列教程-教程概述

教程概述 各位网友大家好,我是夜鹰教程网的汤老师,从今天开始,我准备写一套web前端开发的教程. 适合0基础的朋友,从最简单的html开始. 力争做到学完全套教程能在IT行业就业的水平. 特别适合应届毕业生.已上班但是想转行的朋友.喜欢前端开发的业余爱好者. 学习路线为: html =>css=>javascript=>jquery=>h5=>css3=>nodejs=>mongodb=>git>grunt=>webpack=>less=&

Arduino物联网开发实例教程

blinker解决方案 blinker是一套跨硬件.跨平台的物联网解决方案,提供APP端.设备端.服务器端支持,使用公有云服务进行数据传输.可用于智能家居.数据监测等领域,可以帮助用户更好更快地搭建物联网项目. blinker具备哪些优势 1. 支持多种连接方式blinker提供当前最流行的连接方式支持,如蓝牙.WiFi.NBiot/GPRS,可以应对大多数物联网场景需求.2. 支持多种开发平台blinker提供Arduino.freeRTOS(即将支持)支持库,可以使用AVR / ARM /

Spring Boot 使用IntelliJ IDEA创建一个web开发实例(一)

.新建项目File-->New-->Project-->Spring Initializr 点击Finish,一个Spring Boot web应用就创建好了. 原文地址:https://www.cnblogs.com/zsg88/p/9161685.html

Spring Boot 使用IntelliJ IDEA创建一个web开发实例(三)

属性配置 1.配置application.properties文件 配置web访问端口和context path server.port = 8081 server.servlet.context-path = /demo 运行 2. 用application.yml进行配置 server: port : 8082 servlet: context-path: /demo2 启动,访问 注意,application.properties 比application.yml的优先级高 原文地址:ht