CSS布局技巧的——各种居中

by admin on 2018年8月31日

一.DotNet散列算法概述:

 
 说及散列应该还无见面生,并且首先都见面想到MD5加密,但是对散列更加入木三分之了解,恐怕知道的总人口就是未会见那么多了。散列算法创建了一个散列码,也号称“消息摘要”或“消息指纹”,看到“消息指纹”这个词,我第一想到的凡可以唯一识别一个消息还是说可以唯一的标识一个总人口。

唯独在ie8+以及chrome、firefox等浏览器被的text-align:center对块状元素无效,只能用表格自有的align属性。

二.DotNet散列算法应用解析:

 
 以上对散列算法,以及散列算法在.NET中分类做了一个粗略的牵线,接下去我们切实看一下再.NET中贯彻这几乎栽散列算法的类似。

 
 于.NET中System.Security.Cryptography命名空间下之HashAlgorithm类,表示有加密哈希算法实现全要从中派生的基类。有如下类结构:

哲学原理 1

 
 以.NET中发生少种植档次的落实类似,一个是因“Managed”结尾,这些近似都吃写副托管.NET语言,一栽是坐“CryptoServiceProvider”结尾,这些近似是根据Windows
CryptoAPI的。接下来我们切实的打听一下HashAlgorithm类的一些法:

哲学原理 2

三.DotNet散列算法实现实例:

   以上介绍在.NET下之散列加密的主要类,接下去看一下MD5的现实性实现代码:

  /// <summary>
  /// 表示 MD5哈希算法的所有实现均从中继承的抽象类。
  /// </summary>
  [ComVisible(true)]
  public abstract class MD5 : HashAlgorithm
  {
    /// <summary>
    /// 初始化 MD5 的新实例。
    /// </summary>
    protected MD5()
    {
      this.HashSizeValue = 128;
    }

    /// <summary>
    /// 创建MD5 哈希算法的默认实现的实例。
    /// </summary>
    /// <returns>
    /// <see cref="T:System.Security.Cryptography.MD5"/> 哈希算法的新实例。
    /// </returns>   
    public static MD5 Create()
    {
      return MD5.Create("System.Security.Cryptography.MD5");
    }

    /// <summary>
    /// 创建MD5 哈希算法的指定实现的实例。
    /// </summary> 
    /// <returns>
    public static MD5 Create(string algName)
    {
      return (MD5) CryptoConfig.CreateFromName(algName);
    }
  }

 
 由以上的代码可以看住,在MD5看似吃,具体的落实方式都是由HashAlgorithm类的Create方法实现,在此虽不再做牵线。

 

   1.散列算法原理概述:

 散列算法的核心是一个数学函数,在个别独定点大小的数目块被运作它们好创建一个散列码。在散列算法中得指定一个“种子值”,该值和率先块消息数据并载入散列函数这即大成了第一独破列码,按照上一样步之方式,散列码依次进入下一个散列函数运算,最后获得散列码,如下图所示:

   哲学原理 3

 
 散列码是下重新调用散列函数的链创建的,散列码依赖让信息的么位之价。散列函数是由此操作简单片固定长度的二进制数据来生成散列码,散列算法则描述类以散列函数为信息创建散列码的长河,散列算法是使散列函数的协商,指定类如何分解消息及如何链接之前信息快出的结果。散列码的长度为有着限制,散列码长度比丰富时,需要之破解时间虽会见比丰富,这虽是暴力破解的方式,但是散列码较丰富,生成散列码的时刻纵是于丰富,任何政策都是得付出代价的。

2、使用 text-align:center

加密算法系列:

     
 DotNet加密方法分析–散列加密:http://www.cnblogs.com/pengze0902/p/6268700.html

     
 DotNet加密方法分析–对如加密:http://www.cnblogs.com/pengze0902/p/6268702.html

     
 DotNet加密方法分析–数字签名:http://www.cnblogs.com/pengze0902/p/6268709.html

     
 DotNet加密方法分析–非对如加密:http://www.cnblogs.com/pengze0902/p/6268705.html

哲学原理 4

   2.DotNet底散列算法种类:

    在.NET中,常用的散列算法种类有如下几种植:

哲学原理 5

   
在上述列举的几种植散列算法中,MD5是.NET含有的卓绝抢的散列算法。如果基础算法来欠缺,越长的散列码并不一定能够提供进一步好之平安。

从中是我们运用css来布局时遇到的气象。使用css来展开居中时,有时一个性就能搞定,有时则需自然的技能才会配合到具有浏览器,本文就在中之有些常用方法做只简易的牵线。

   没时间拉了,赶紧上车吧。

4、使用表格

   1.HashAlgorithm类方以及性能解析:

     (1).Hash属性:获取计算所得的哈希代码的价值。

public virtual byte[] Hash
    {
      get
      {
        if (this.m_bDisposed)
          throw new ObjectDisposedException((string) null);
        if (this.State != 0)
          throw new CryptographicUnexpectedOperationException(Environment.GetResourceString("Cryptography_HashNotYetFinalized"));
        return (byte[]) this.HashValue.Clone();
      }
    }

 
该属性返回类计算机的散列码值,该属性是一个字节数组,由代码可以见到该属性是光念之,返回计算所得的哈希代码的当下价值。

     (2).Create()方法:创建哈希算法的指定实现的实例。

  public static HashAlgorithm Create(string hashName)
    {
      return (HashAlgorithm) CryptoConfig.CreateFromName(hashName);
    }

   
 由代码可知,指定哈希算法的新实例,如果hashName不是有效哈希算法,则也
null,该办法应用名称创建一个HashAlgorithm对象的初实例。

     (3).ComputeHash()方法:从字节数组和数目流中创建散列码。

 public byte[] ComputeHash(byte[] buffer)
    {
      if (this.m_bDisposed)
        throw new ObjectDisposedException((string) null);
      if (buffer == null)
        throw new ArgumentNullException("buffer");
      this.HashCore(buffer, 0, buffer.Length);
      this.HashValue = this.HashFinal();
      byte[] numArray = (byte[]) this.HashValue.Clone();
      this.Initialize();
      return numArray;
    }

 
 以上是ComputeHash()方法的一个重载版本,使用字节数组来创造一个散列码,该方式返回一个字节数组,该数组含有消息数据的散列码。HashCore()将写副对象的数据路由至哈希算法以计算哈希值,HashFinal()在加密流对象处理了最后之数量后成功哈希计算。

 

   2.MD5加密实例:

  /// <summary>
        /// 32位大写
        /// </summary>
        /// <returns></returns>
        public static string Upper32(string s)
        {
            var hashPasswordForStoringInConfigFile = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(s, "md5");
            if (hashPasswordForStoringInConfigFile != null)
                s = hashPasswordForStoringInConfigFile;
            return s.ToUpper();
        }

        /// <summary>
        /// 32位小写
        /// </summary>
        /// <returns></returns>
        public static string Lower32(string s)
        {
            var hashPasswordForStoringInConfigFile = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(s, "md5");
            if (hashPasswordForStoringInConfigFile != null)
                s = hashPasswordForStoringInConfigFile;
            return s.ToLower();
        }

        /// <summary>
        /// 16位大写
        /// </summary>
        /// <returns></returns>
        public static string Upper16(string s)
        {
            var hashPasswordForStoringInConfigFile = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(s, "md5");
            if (hashPasswordForStoringInConfigFile != null)
                s = hashPasswordForStoringInConfigFile.ToString();
            return s.ToUpper().Substring(8, 16);
        }

        /// <summary>
        /// 16位小写
        /// </summary>
        /// <returns></returns>
        public static string Lower16(string s)
        {
            var hashPasswordForStoringInConfigFile = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(s, "md5");
            if (hashPasswordForStoringInConfigFile != null)
                s = hashPasswordForStoringInConfigFile.ToString();
            return s.ToLower().Substring(8, 16);
        }

 

四.总结:

   
以上介绍了散列算法在.NET的应用及公理,希望可以拉到有口,如果文章被生描绘的荒唐以及免做到的地方,还于大家多多批评指正。

 
友情添加一个加密的helper方法:http://www.cnblogs.com/liqingwen/p/6155694.html

 

哲学原理 6

 
 于当代社会中,信息安全于各级一个口且是必不可缺的,例如我们的银行账户安全、支付宝和微信账户安全、以及邮箱等等,说交消息安全,那即便必须得干加密技术,至于加密之一对连锁概念,在此虽隐瞒了。

于ie6、7吃得以经css的text-algin来支配表内容的档次方向的对齐,无论内容是行内元素或片状元素都有效。

 
 这无异次等用会晤着重讲解.NET的加密方法,接下将会见独家介绍散列加密,对如加密,非对如加密等等加密方法以.NET中之采取,本文主要讲解散列加密在.NET中之应用实例。

设您以的凡表格的话,那了不用啊各种居中问题如果烦恼了,只要用到
td(也或会见因此到 th)元素的 align=”center” 以及 valign=”middle”
这点儿个属性就可以全面的处理它里面内容的程度跟直居中问题了,而且表格默认的哪怕会指向她里面的情进行垂直居中。如果想当css中决定表内容之居中,垂直居中可以下
vertical-align:middle,至于水平居中,貌似css中凡是未曾相对应之习性之,但是当IE6、7丁我们可以采用text-align:center来针对表里的因素进行水平居中,IE8+以及谷歌、火狐等浏览器的text-align:center只针对行内元素于作用,对块状元素无效。

   1.SHA1算法实例:

   public static string GetSha1(string str)
        {
            if (string.IsNullOrEmpty(str))
            {
                throw new ArgumentNullException(str);
            }
            try
            {
                //建立SHA1对象
                SHA1 sha = new SHA1CryptoServiceProvider();
                //将mystr转换成byte[] 
                var enc = new ASCIIEncoding();
                var dataToHash = enc.GetBytes(str);
                //Hash运算
                var dataHashed = sha.ComputeHash(dataToHash);
                //将运算结果转换成string
                var hash = BitConverter.ToString(dataHashed).Replace("-", "");
                return hash;
            }
            catch (ArgumentNullException ex)
            {
                throw ex;
            }
            catch (ArgumentException arex)
            {
                throw arex;
            }
            catch (ObjectDisposedException obex)
            {
                throw obex;
            }

具体来说就是将要放在中之元素的margin-left和margin-right都设为auto,此道才能够进行水平的居中,且对转移元素或切定位元素无效。

   2.HMAC类: 表示因哈希的信证实代码 (HMAC) 的有着实现必须从中派生的抽象类。

     创建加密散列码(消息验证码MACs)有三三两两种植方式:

     
 第一栽:先合并类密钥和消息数据,再用普通的加密散列算法来吧该并集创建散列码。常用的凡HMAC标准。

     
 第二种:使用对称算法来加密信数据,除了最后几各项外,所有的加密数据位都用为放弃。

 
 HMAC标准制订了安联合消息数据及密钥,但是并未点名相应用那种散列算法来创造散列码,这为尽管象征该专业可以利用被任何算法。

    (1).Key属性:获取或设置用于哈希算法的密钥。

 public override byte[] Key
    {
      get
      {
        return (byte[]) this.KeyValue.Clone();
      }
      set
      {
        if (this.m_hashing)
          throw new CryptographicException(Environment.GetResourceString("Cryptography_HashKeySet"));
        this.InitializeKey(value);
      }
    }

   该属性在此地进行类似更写,该属性是一个字节数组,属性可读写。

    (2).Create()方法:创建基于哈希的信息证实代码 (HMAC) 指定实现的实例。

public static HMAC Create(string algorithmName)
    {
      return (HMAC) CryptoConfig.CreateFromName(algorithmName);
    }

   该方式指定的 HMAC
实现的新实例,该办法跟HashAlgorithm类的Create方法类似,这里就未做透之分析。

    (3).HashCore()方法:将写副对象的数据路由让默认 HMAC
哈希算法以计算哈希值。

  protected override void HashCore(byte[] rgb, int ib, int cb)
    {
      if (!this.m_hashing)
      {
        this.m_hash1.TransformBlock(this.m_inner, 0, this.m_inner.Length, this.m_inner, 0);
        this.m_hashing = true;
      }
      this.m_hash1.TransformBlock(rgb, ib, cb, rgb, ib);
    }

   该办法在此地让重复写,将写副对象的数据路由被默认 HMAC
哈希算法以计算哈希值。TransformBlock()计算输入字节数组的指定区域的哈希值,将输入字节数组的指定区域复制到指定的区域,输出字节数组。

只要单独想实现一个趋势的居中,则足以就以left , margin-left
来兑现程度居中,使用top , margin-top来落实垂直居中。

于点子5着说了在IE8+、火狐谷歌等今天浏览器中可为此display:table-cell来进行居中,而这边的font-size的措施虽然适用于IE6和IE7,所以将当时简单种方式结合起来便能够匹配所有浏览器了:

运行效果:

读前端的同窗等,欢迎加入前端学习交流群

一旦父元素高度是都掌握的,要把她里面的子元素进行水平垂直居中,则可采取这种办法,且子元素的幅度或可观都不用知道。

哲学原理 7

9、利用font-size来实现垂直居中

运行效果:

哲学原理 8         哲学原理 9

前者学习交流QQ群:461593224

看下代码:

此处要无定义元素的从容和赛的话,那么他的松动就会出于left,right的价值来支配,高会由top,bottom的价来控制,所以要使装元素的胜和宽。同时使更改left,right
, top , bottom的价值还能够为要素于某方向偏移,大家可协调失去品尝。

除此以外,如果 vertical-align:middle
是摹写在父元素中一旦不是子元素中,这样也是得的,只不过计算font-size时采取的 
1.14 这个 数值要改成大约 1.5 这个价。

至于何以是除以1.14比方未是其它的再三,还确实没人懂得,你只有待牢记1.14夫累就尽了。

7、另一样种植使绝对化定位来居中之计

绝对定位进行在中之法则是经过把此绝对定位元素的left或top的性能设为50%,这个时段元素并无是位于中的,而是比居中之职于右侧或于左偏了之元素宽度或可观的一半底偏离,所以待采取一个借助的margin-left或margin-top的价来将其牵涉回居中的职位,这个仗的margin值就取元素宽度或可观的一半。

欠措施就对IE6和IE7有效。

 

6、使用绝对化定位来进展居中

哲学原理 10

哲学原理 11

1. 把margin设为auto

横流:本文所谈方法除了特别说明外,都是兼容IE6+、谷歌、火狐等主流浏览器的。

哲学原理 12

哲学原理 13

哲学原理 14

拖欠方法的要义是叫父元素设一个正好的font-size的价值,这个价的取值为该父元素的万丈除为1.14收获的价值,并且子元素必须
是一个inline或inline-block元素,需要添加vertical-align:middle属性。

地方的例证中盖如果在中的素是一个块状元素,所以我们还需把他变成行内元素,如果一旦在中之素是图等行内元素,则足以省略此步。

那面所说的都是坏基础之法,自然不能够叫奇淫巧计,下面就吧有些要动用一些技艺的居中方法。

 

哲学原理 15

对于那些不是表格的要素,我们得经display:table-cell
来拿它们套成一个表格单元格,这样尽管可以行使表格那非常有利的在中特性了。例如:

哲学原理 16

先期来说几种植简易的、人畜无害的居中方法

此法才适用于那些我们既掌握其的肥瘦或可观的素。

转居中之规律是:把变化元素相对固化及父元素宽度50%底地方,但这个时候元素还不是在中的,而是比居中之不可开交位置多来了自一半底涨幅,这时就需要他其中的子元素再就此一个针锋相对固化,把那么大多有的自家一半之宽窄拉回,而因为相对固化正是相对于自己来恒定的,所以我一半底大幅度只要拿left
或 right 设为50%就是可以赢得了,因而未用掌握我之其实增幅是有点。

把文字的line-height设为文字父容器的可观,适用于仅生一行文字的情景。

如上就是有的普遍的居中方法了,如发遗漏或错的处在,敬请指正!

这种应用浮动配合相对固化来居中之艺术,优点是永不知道如果放在中之素的大幅度,即使这个幅度是无休止转变之也实施;缺点是得一个剩余的因素来包裹要放在中之要素。

本条没什么好说的,只能针对图片,按钮,文字等行内元素(display也inline或inline-block等)进行水平居中。但如若证实的凡当IE6、7立即半个奇葩的浏览器被,它是能对任何因素进行水平位于中之。

5、使用display:table-cell来居中

脚用相同截代码来打探这种办法:

运行效果:

其一方法吗是有关变更元素怎么水平居中之解决智,并且我们不需要明白要放在中之元素的幅度。

哲学原理 17

此法同样只有适用于那些我们既明白其的涨幅或可观的因素,并且遗憾的是她就支持IE9+,谷歌,火狐等符合w3c标准的现代浏览器。

 

3、使用哲学原理line-height让单行的亲笔垂直居中

哲学原理 18

8、使用浮动配合相对固化来拓展水平居中

而,这种办法只有会以IE8+、谷歌、火狐等浏览器上应用,IE6、IE7都不算。

哲学原理 19

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图