独书先生 Menu

HTML5+CSS3:简单网页结构与CSS公共样式模板

初学者常用的HTML结构与CSS公共样式模板

HTML模板:index.html

只添加了CSS文件链接与基本网页框架

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0"/>
    <meta content="telephone=0" name="format-detection"/>
    <link rel="stylesheet" type="text/css" href="CSS/common.css"/>
    <link rel="stylesheet" type="text/css" href="CSS/main.css"/>
    <title>标题</title>
</head>
<body>
<!--头部-->

<header></header>


<!--主体-->

<section></section>


<!--尾部-->

<footer></footer>


</body>
</html>

CSS Common模板:Common.css

@charset "utf-8";

html,body,header,section,footer,ul,li,
a,p,span,img,h3{margin:0;padding:0;}

a{ text-decoration: none;}

img{border:0;}

ul{list-style:none;}

body{min-width:340px;
margin:0 auto;
font:normal 12px/1.5 
Microsoft YaHei,
Helvetica,
Arial,
sans-serif;}

注意点:CSS: 为什么不建议使用*{padding:0;margin:0;}进行reset?

CSS: 表格table样式

效果:

表格table 表格table

HTML:

<section>
    <table>
        <tr>
            <th>标题一</th>
            <th>标题二</th>
            <th>标题三</th>
        </tr>

        <tr>
            <td>第一行1</td>
            <td>第一行2</td>
            <td>第一行3</td>
        </tr>

        <tr>
            <td>第二行1</td>
            <td>第二行2</td>
            <td>第二行3</td>
        </tr>

        <tr>
            <td>第三行1</td>
            <td>第三行2</td>
            <td>第三行3</td>
        </tr>
    </table>
</section>

CSS : 

section table{
width:90%;
margin:5px auto;
border-collapse: collapse;
border-spacing: 0;
overflow:hidden;
border:1px solid #CCCACC;
border-radius:10px;
-webkit-box-shadow:0 0 4px rgba(0,0,0,0.3);}

section table th{
padding:10px 15px;
border-right:1px solid #CCCACC;
background:#E9E7E9;
text-shadow: 1px 1px 1px #fff;}

section table td{
padding:10px;
border-right:1px solid #CCCACC;
border-top:1px solid #CCCACC;}

section table td:last-child{
text-align:center;
border-right:none;}

CSS: 设置合理的min-width

问题:HTML页面设置自适应,缩小窗口,自适应变小,最小时候可能内容溢出界面

原因:最小的min-width设置偏大,比如320px,导致浏览器宽度已经缩小至250px时候,内容溢出

解决:设置min-width:250px或更小

CSS: li元素设置width百分比后加border出现最后一个li元素挤到下一行

问题:8个li元素,实现4个4个排列,设置每个li元素25%,加上border边框,第四个li元素被挤到下一行

 

解决:设置属性

 box-sizing: border-box;

可把border和padding包含在width里面,总共计算25%。

例:

.nav_one li{float:left;width:25%;height:100px;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;padding:10px;border:1px solid #E7E4DE; }

CSS: 为什么不建议使用*{padding:0;margin:0;}进行reset?

推荐使用

body,div,span,a{
padding:0;
margin:0;
}

而非:

*{
  margin:0;
 padding:0;
}

使用采用{pading:0;margin:0;}这样的写法好处是写起来很简单,但是是通配符,需要把所有的标签都遍历一遍,当网站较大时,样式比较多,这样写就大大的加强了网站运行的负载,会使网站加载的时候需要很长一段时间,因此一般大型的网站都有分层次的一套初始化样式

说法来自:segmentfault.com

好用的VPN推荐:Green VPN 唯一官网

2019.09.20更新

Green VPN 已倒闭,大家下面不用接着看了,但是这无法阻挡我们求知的好奇心,推荐阅读笔者最新的科学上网分享:

好用的VPN推荐: Express VPN

介绍

喜欢FQ浏览自由互联网的童鞋一定不陌生VPN,关于免费VPN的推荐也是五花八门。最初我使用的是goagent,但是现在goagent已经不能用了。网友也经常推荐Shadowsocks,不过我还没尝试使用,不知道具体使用质量如何,欢迎有用过的童鞋一起分享。

这篇文章,我只给大家推荐本人正在使用而且速度、稳定性还可以的Green VPN,因为百度Green VPN出来大多数还是山寨网站,很难辨别,请先认准Green VPN唯一官网:

https://www.greenjsq.me

Green VPN 官网

Green VPN 官网

Green VPN有Windows、iOS、Android、Mac版本,使用方便快捷 Continue reading…

如何打开epub格式的电子书

实用教程
在网上搜索下载电子书时,可能会下载到epdu格式的电子书文件,若是下载到手机上,安卓直接用自带的电子书软件即可打开,苹果把书保存到iBooks即可打开阅读;若是下载到电脑上,有几个方法供参考:
1.网页端的阅读器

EPUB reader

把书从本地加进去就可以了,方便快捷

2.软件阅读器:Adobe Digital Editions
选择对应的mac或者windows版本下载安装即可
然后软件里点击:文件 – 添加到图书馆-选中本地epub电子书文件

Adobe Digital Editions Adobe Digital Editions

双击书籍,进入阅读界面,采用上下或者左右翻页进行阅读

read Read

科普知识:
ePub(Electronic Publication的缩写,意为:电子出版),是一个自由的开放标准,属于一种可以”自动重新编排”的内容;也就是文字内容可以根据阅读设备的特性,以最适于阅读的方式显示。EPub档案内部使用了XHTML或DTBook (一种由DAISY Consortium提出的XML标准)来展现文字、并以zip压缩格式来包裹档案内容。EPub格式中包含了数位版权管理(DRM)相关功能可供选用。

Python初学者笔记(5)-简单的通讯录

要求:

编写一个简单的通讯录

1、通讯录包含至少包含姓名、电话号码、电子邮箱;2、通讯录的信息能够保存在本地磁盘;3、通讯录查找特定人员的信息;4、通讯录能够修改特定人员的信息;5、通讯录能够删除特定人员的信息;6、通讯录能完全显示所有人的信息

 

方法:Python 2.7.9 / Windows

# -*- coding: gbk -*-

import os,sys
import cPickle as p

#判断通讯录是否存在,不存在则创建通讯录
if os.path.exists('contacts.dat')==False:
    f = file('contacts.dat','wb')
    temp = {'total':0}
    p.dump(temp,f)
    f.close()
    print "\n本地磁盘尚无通讯录,新通讯录创建成功!\n"
else:
    pass

#添加联系人
def add():
    f = file('contacts.dat','rb')
    a = p.load(f)
    f.close()
    name = raw_input('请输入所要添加联系人的姓名:')
    if a.has_key(name):
        print "\n联系人已存在,添加失败!请改名~"
    else:
        tel = raw_input('请输入电话号码:')
        email = raw_input('请输入所要添加联系人的电子邮件(example@example.com):')
        list = [tel,email]
        information = {name:list}
        a['total'] += 1
        a.update(information)
        f = file('contacts.dat','wb')
        p.dump(a,f)
        f.close()
        print '添加成功!'

#显示所以联系人
def showall():
    f = file('contacts.dat','rb')
    a = p.load(f)
    print "一共有{}个联系人.\n".format(a['total'])
    print "{:<8}\t{:<15}\t{:<30}".format('姓名','电话号码','电子邮箱')
    for key in a.keys():
        if key != 'total':
            print "{:<8}\t{:<15}\t{:<30}".format(key,a[key][0],a[key][1])
    f.close()

#退出通讯录
def exit():
    sys.exit()

#查找
def search(name):
    f = file('contacts.dat','rb')
    a = p.load(f)
    if a.has_key(name):
        print "{}的号码是:{}".format(name,a[name][0])
        print "{}的电子邮箱是:s{}".format(name,a[name][1])
    else:
        print "联系人不存在!"
    f.close()

#删除
def delete(name):
    f = file('contacts.dat','rb')
    a = p.load(f)
    f.close()
    if a.has_key(name):
        a.pop(name)
        a['total'] -= 1
        f = file('contacts.dat','wb')
        p.dump(a,f)
        f.close()
        print "删除成功!"
    else:
        print "联系人不存在!无法删除!"

#修改
def modify(name):
    f = file('contacts.dat','rb')
    a = p.load(f)
    f.close()
    if a.has_key(name):
        tel = raw_input("请输入修改后的号码:")
        a[name][0] = tel
        email = raw_input("请输入修改后的邮箱:")
        a[name][1] = email
        f = file('contacts.dat','wb')
        p.dump(a,f)
        f.close()
        print "修改成功!"
    else:
        print "联系人不存在!"

#界面
def menu():
    print
    print "****************************"
    print "     显示菜单提示信息:*"
    print "     显示所有联系人:0"
    print "     查找联系人:1"
    print "     添加联系人:2"
    print "     删除联系人:3"
    print "     更改联系人资料:4"
    print "     退出通讯录:5"
    print "****************************"

#主程序
while True:
    menu()
    x=raw_input("\n请输入您的选择菜单号:")
    if x == '2':
        add()
        continue
    if x == '0':
        showall()
        continue
    if x == '5':
        print "谢谢使用!"
        exit()
        continue
    if x == '1':
        name = raw_input("请输入所要查找的联系人姓名:")
        search(name)
        continue
    if x == '3':
        name = raw_input("请输入所要删除的联系人姓名:")
        delete(name)
        continue
    if x == '4':
        name = raw_input("请输入所要修改的联系人姓名:")
        modify(name)
        continue
    if x == '*':
        menu()
    else:
        print "输入的选项不存在,请重新输入!"
        continue

结果:

>>>

****************************
显示菜单提示信息:*
显示所有联系人:0
查找联系人:1
添加联系人:2
删除联系人:3
更改联系人资料:4
退出通讯录:5
****************************

其余功能显示正常。

 

说明:Windows平台下,开头声明# -*- coding: gbk -*-显示中文正常

本来网上查询中文乱码问题,应该是使用# -*- coding: utf-8 -*-的开头声明,后发现这个声明不管用,后改用gbk起作用。

更深入的内容有待后续研究,欢迎大家讨论!

 

源自:DuShuSir.com

Python初学者笔记(4):Python实现输入生日显示对应的生肖和星座

Python实现输入生日显示对应的生肖和星座。已知1972年是鼠年,只要可以查1972年以后的日期就可以。下图是星座对应表。
 %e6%98%9f%e5%ba%a712
# -*- coding:utf-8 -*-

def sx(year):
    y = (year-1972)%12 #对12取余
    return shx[y] #从字典shx里依次取对应的生肖,如:1972即余数0,取“鼠”
def xz(month,date):
    d = (20,19,21,20,21,22,23,23,23,24,23,22) #按日期顺序把每个月的分隔星座的日期列出来,从水瓶座(1月)开始
    c = ("摩羯座","水瓶座","双鱼座","白羊座","金牛座","双子座","巨蟹座","狮子座","处女座","天秤座","天蝎座","射手座")
    # 有了列表d的分隔日期,对应在此分隔日期之前的星座写入列表c,如:第一个水瓶座的20号之前是摩羯座
    if date &amp;lt; d[month-1]: #如果是1.19号,即取d中1月份的20
        return c[month-1] #日期在20号之前,即取对应到c的摩羯座
    else:
        return c[month] #否则就是20号之后,下一个水瓶座

shx = {0:"鼠",1:"牛",2:"虎",3:"兔",4:"龙",5:"蛇",6:"马",7:"羊",8:"猴",9:"鸡",10:"狗",11:"猪"}
sr = raw_input("请输入您的生日(格式:1999.09.09):")
t = sr.split(".") #切片,把sr以“.”分割,变成3个字符串
year = int(t[0])
month = int(t[1])
date = int(t[2])

print "您的生肖是:"+sx(year)
print "您的星座是:"+xz(month,date)
 Result
>>>
请输入您的生日(格式:1999.09.09):1992.11.24
您的生肖是:猴
您的星座是:射手座

Python初学者笔记(3):输出列表中的奇数/奇数项,字符串中的偶数项,字符串大小写转换

【1】a=[8,13,11,6,26,19,24]
1)请输出列表a中的奇数项
2)请输出列表a中的奇数

解:1)

a=[8,13,11,6,26,19,24] 
print a[::2]

Result:
>>>
[8, 11, 26, 24]

2)

a = [8,13,11,6,26,19,24]
b = []
for item in a:
    if item%2 !=0:
        b.append(item)
    else:
        continue
print b

Result:
>>>
[13, 11, 19]

Continue reading…