一篇文章带你了解SVG 转换知识

SVG 转换在SVG图像中创建的形状。例如,移动,缩放和旋转形状。这是显示垂直或对角线文本的便捷方法。

一、转换简单示例

例:

<svg xmlns="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink">

   <rect x="50" y="50" height="110" width="110"
         style="stroke:#ff0000; fill: #ccccff" transform="translate(30) rotate(45 50 50)">
   </rect>
   <text x="70" y="100" transform="translate(30) rotate(45 50 50)"
   >nhooo.com</text>
</svg>

运行效果:

注:

元素的transform 和 的transform属性。

该属性指定要应用于形状的变换。在此示例中,应用了平移和旋转。两者都将在本文后面解释。

二、哪些元素可以转换?

可以将变换应用于所有SVG形状。还可以将变换应用于 元素,从而一次性有效地变换整个元素组。也可以变换渐变和填充图案。

三、转换函数

转换函数不会自行转换SVG形状,而是会转换该形状的基础坐标系。因此,即使宽度以倍数显示,宽度20乘以2的形状在逻辑上仍具有20的宽度。

1. 移动 translate()

translate()函数移动形状。将x 和 y 值传递给translate()的函数。

translate(50,25)

将形状沿x轴移动50个单位,并沿y轴移动25个单位。显示了两个位置相等且大小相等的形状,有无平移。

例:

<svg width="500" height="150">
<rect x="20" y="20" width="50" height="50" style="fill: #cc3333" />
<rect x="20" y="20" width="50" height="50" style="fill: #3333cc" transform="translate(75,25)">
</rect>
</svg>

运行效果:

与第一个(红色)形状相比,第二个(蓝色)形状沿x轴移动75个单位,沿y轴移动25个单位。

2. 旋转 rotate()

rotate()函数围绕点0,0旋转形状。

显示一个矩形(轮廓)和旋转15度后的相等矩形(实心)。

<svg width="500" height="150">
<rect x="20" y="20" width="40" height="40" style="stroke: #3333cc; fill:none;"></rect>

<rect x="20" y="20" width="40" height="40" style="fill: #3333cc" transform="rotate(15)"></rect>
</svg>

运行效果:

如果要绕除0,0以外的其他点旋转,则将该点的x和y坐标传递给transform函数。

显示了一个非旋转的矩形(轮廓)和一个相等的矩形(实心)围绕其中心旋转15度。

例:

<svg width="500" height="150">
<rect x="20" y="20" width="40" height="40"
     style="stroke: #3333cc; fill:none;"
      ></rect>

<rect x="20" y="20" width="40" height="40"
     style="fill: #3333cc"
     transform="rotate(15, 40, 40)"
      ></rect>
</svg>

运行效果:

所有旋转都是顺时针旋转,其度数从0到360。如果要逆时针旋转,请将负的度数传递给rotate()函数。

3. 缩放 scale()

3.1 scale()函数简介

scale()函数按比例放大或缩小形状。scale()函数可缩放形状尺寸及其位置坐标。因此,以20乘以2的比例缩放的宽度为20且高度为30的矩形位于20,20处,其宽度为40且高度为60。

scale()函数还可以缩放形状的笔触宽度。

3.2 案例

显示了一个位于10,0处,宽度为20且高度为20的矩形(蓝色),以及一个等比例的矩形(黑色),其缩放比例为2。

<svg width="500" height="150">
<rect x="10" y="10" width="20" height="30" style="stroke: #3333cc; fill:none;"></rect>

<rect x="10" y="10" width="20" height="30" style="stroke: #000000; fill:none;" transform="scale(2)"></rect>
</svg>

运行效果:

注意

矩形的位置和大小是如何缩放的。

可以在x轴和y轴上按其他因子缩放形状。为此,可以向scale()函数提供x-scale和y-scale参数。

如下所示:

scale(2,3);

将沿x轴将形状缩放2倍,沿y轴将形状缩放3倍。

例:

<svg width="500" height="150">
<rect x="10" y="10" width="20" height="30" style="stroke: #3333cc; fill:none;"></rect>

<rect x="10" y="10" width="20" height="30" style="stroke: #000000; fill:none;" transform="scale(2,3)"></rect>
</svg>

运行效果:

注意:

缩放后的矩形(黑色)的笔划宽度也是如何缩放的,并且在x轴和y轴上的缩放比例不同。

4. 偏斜 skew()

skewX()和skewY()函数偏斜x轴和y轴。实际上,这些函数会根据以度为单位指定的某个角度来倾斜给定的轴。

显示具有不同skewX()值的矩形的一些示例。

<svg width="500" height="150">
      <rect x="10" y="10" width="20" height="30" style="stroke: #3333cc; fill:none;" />

      <rect x="50" y="10" width="20" height="30" style="stroke: #000000; fill:none;" transform="skewX(10)" />
      <rect x="100" y="10" width="20" height="30" style="stroke: #000000; fill:none;" transform="skewX(45)" />
      <rect x="150" y="10" width="20" height="30" style="stroke: #000000; fill:none;" transform="skewX(60)" />
    </svg>

运行效果:

skewX()函数使垂直线看起来像是按给定角度旋转了。

因此,skewY()函数使水平线看起来像是旋转了给定角度。

例:

<svg width="500" height="150">
      <rect x="10" y="10" width="20" height="30" style="stroke: #3333cc; fill:none;" />

      <rect x="50" y="10" width="20" height="30" style="stroke: #000000; fill:none;" transform="skewY(60)" />
      <rect x="100" y="10" width="20" height="30" style="stroke: #000000; fill:none;" transform="skewY(45)" />
      <rect x="150" y="10" width="20" height="30" style="stroke: #000000; fill:none;" transform="skewY(10)" />
</svg>

四、总结

本文基于HTML基础,介绍了图像的转换。详细的介绍了如何运用转换函数,进行图像移动、缩放、转动、拉长或拉伸等一系列操作。通过案例的分析,丰富的效果图,能够让读者更好的理解。

希望能够帮助你更好的理解SVG中图像转换。

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【入群】

——————- End ——————

往期精彩文章推荐:

一篇文章带你了解CSS基本用法和选择器知识

前言

相信做过网页的对Css都不是很陌生,它可以帮助我们重铸网页中很多绚丽的特效,尤其是现在Css已经发展3.0版本,很多功能更是丰富多彩,让我们的开发时间不仅大大缩短,而且还可以轻松做出许多华丽的特效,需要注意的是,Css相当于Html的一个美化装置,所以它必须依赖于Html才能发挥作用,那么今天我们就来深入了解下它吧。

一、如何使用CSS

要想使用Css来增加Html的美观,有三种方式:

1).头部文件中定义

<style>
    标签的Css属性
</style>

2).导入CSS文件

#创建一个Css文件,里面写入样式,然后导入
<link rel="stylesheet" type="text/Css" href="1.Css">

3).直接在标签中定义

<div style='width:120px;height:60px;background-color:red'></div>Css注释
注:与Html 不同,它的注释方式是:/* Css语句*/

二、CSS的选择器

为什么一开始要讲选择器了,因为我们要想精确修改的Html中的某个元素的属性,就必须使用选择器,它可以通过选择器定位到某个元素上然后修改元素的样式。

1).id和class选择器

id选择器必须现在标签中的定义,然后在在头部标签的style标签中用“#”来表示:

<Html>
<head>
  <title>Css应用</title>
  <style type="text/Css"> 
     #dv{
       background: red 更改div的背景颜色为红色
     }
</style>
</head>
<body>
<div id='dv'>fd</div> 定义一个id为dv的div
</body>
</Html>

class选择器和id选择器差不多,只不过class选择器用”.“来表示:

<Html>
<head>
  <title>Css应用</title>
  <style type="text/Css">
     .dv{
       background: red
     }
</style>
</head>
<body>
<div class='dv'>fd</div>
</body>
</Html>

2).元素选择器

就是指直接声明标签名为选择器,然后更改样式

<Html>
<head>
  <title>Css应用</title>
  <style type="text/Css">
     div{
       background: red
     }
</style>
</head>
<body>
<div>fd</div>
</body>
</Html>

或者声明所有标签名为选择器

<Html>
<head>
  <title>Css应用</title>
  <style type="text/Css">
    Htmlheadbodydiv{
       background: red
     }
</style>
</head>
<body>
<div>fd</div>
</body>
</Html>

也可以使用元素加选择器更加精确的定位到该元素

<Html>
<head>
  <title>Css应用</title>
  <style type="text/Css">
   div#er{
       background: red
     }
</style>
</head>
<body>
<div id='df'>fd</div>
<p>fhsjak</p>
<div id='er'>re</div>
</body>
</Html>

3).后代选择器

访问一个元素内的其它元素,可以是元素内的任意元素

<Html>
<head>
  <title>Css应用</title>
  <style type="text/Css">
     div span{
       background: red
     }
</style>
</head>
<body>
<div>
<p>erzi
<span>sunzi</span>
</p>
</div>
</body>
</Html>

4).子元素选择器

<Html>
<head>
  <title>Css应用</title>
  <style type="text/Css">
     div>p{
       background: red
     }
</style>
</head>
<body>
<div>
<p>erzi
<span>sunzi</span>
</p>
</div>
</body>
</Html>

5).兄弟选择器

位于元素的下一个元素,不在元素内

<Html>
<head>
  <title>Css应用</title>
  <style type="text/Css">
     div+big{
       background: red
     }
</style>
</head>
<body>
<div>
<p>erzi
<span>sunzi</span>
</p>
</div>
<big>borther</big>
</body>
</Html>

6).伪类选择器

伪类选择器可分为三类

1)).锚伪类,用于检测鼠标的悬停状态。

<Html>
<head>
  <title>Css应用</title>
  <style type="text/Css">
     a:link{    /* 未访问的链接 */
       background: red
     }
     a:visited{    /* 已访问的链接 */
      background: green
     }
     a:hover{  /* 鼠标移动到链接上 */
      background: blue
     }
     a:active{  /* 选定的链接 */
      background: yellow
     }
</style>
</head>
<body>
<a href="https://www.baidu.com">百度</a>
</body>
</Html>
注:a:hover必须置于a:link和a:visited 之后,才是有效的。a:active必须被置于a:hover 之后,才是有效的。

2)). :first-child伪类

匹配第一个匹配到的标签

<Html>
<head>
  <title>Css应用</title>
  <style type="text/Css">
     p:first-child{  匹配第一个p标签
       background: red
     }
     div:first-child{ 匹配第一个div标签
      background: blue
     }
</style>
</head>
<body>
<div id='dv'>
<p class='fd'>fdaf
<div id='gfd'>grerg</div>
</p>
<div class='gf'>fsdjkfhkj
<a href="https://www.baidu.com">baidu</a>
</div>
</div>
</body>
</Html>

3)). :lang伪类

<Html>
<head>
  <title>Css应用</title>
  <style type="text/Css">
  q:lang(hw)  短引用利用伪类
   {
   quotes: "^" "^"
   }
</style>
</head>
<body>
<div id='dv'>
<p>hw<q lang="hw">任性的90后boy</q></p> 必须要用短引用
</div>
</body>
</Html>
<Html>
<head>

7).通用选择器

将样式应用到所有的元素中

*{
  background:red
}

参考文档:W3C官方文档(CSS篇)

三、总结

这篇文章主要介绍了CSS的基本用法和选择器的基础知识。通过对CSS的学习,相信大家应该能做出许多华丽绚烂的特效了吧,CSS的确是一个很强大的东西。

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【入群】

——————- End ——————-

往期精彩文章推荐:

一篇文章教会你在Windows和Linux系统下搭建Nginx

【一、前言】

本文章主要讲解Nginx的基础搭建(如果有不知道web服务器的可以百度,或者我再做一篇图解web)。

Nginx在互联网中作为一个不可或缺的组件,我们看到LNMP集成环境。LNMP(Linux+Nginx+Mysql+Php);如果只知道这个不知道Nginx的搭建过程的话我们有Nginx的主要特性会错过。比如Nginx的优点:

高可用(一个组件可以服务上千人)

热部署(可以做到不停机就能升级基础设施服务)

反向代理(通常可以,上游反向代理,下游负载均衡处理外部请求)

【二、Nginx搭建】

1、首先先下载一个版本。

  1. 1)Nginx社区版2)Nginx企业版 两者没有太大区别,都支持主要几大功能。3)淘宝版本的Nginx对IO进行了优化,至今淘宝在使用的Tengine。

2、Nginx版本分支

3、版本如下:

1)MainLine Version(主线版本开发)

2)Stable(稳定版本)

3)Legacy Version(历史版本)– 如果项目需要上到选定版本可以选这个

4、下载(我们以Nginx Stable Version为例子)。我们能看到Stable Version底下有三个栏目:

1)CHANGE-1.16 是介绍这个版本和上个版本的区别

2)Nginx-1.16 pgp 这个是Linux版本下载选项,将会下载倒tar.gzNginx/Windows

3)1.16.1 这个是Windows系统下载的,将会下载window包

【三、Nginx文件目录(如下)】

1、文件目录如下所示:

2、文件内容解析如下:

1)conf(存放配置文件):Nginx.conf(主要的建站配置文件夹)

2)contrib(是一些Linux的Vim配置文件):作用是将整个vim文件移动到~/.vim/profile目录底下,就会在vim下有高亮表现

3)doc (documentation 文档目录):一些日志改变以及readme文档还有License授权

4)html(默认的html,网站的入口):

  • index.html 默认网页
  • 50x.html 常见的错误页面

5)logs(默认的日志文件夹)

6)temp(临时文件目录)

【四、Windows下搭建】

首先需要解决如何对下一页的网址进行请求的问题。可以点击下一页的按钮,观察到网站的变化分别如下所示:

1、Windows下我们直接点击Nginx根目录下的Nginx.exe即可立即使用了。闪退是正常现象,之后检查端口查看是否被占用,第一次启动推荐使用命令行启用 :

.\nginxpath\nginx.exe(一直停留不变则说明开启成功)  

2、 然后我们打开网址:

http://localhost:80

3、这样就是成功 如果失败了看下面。使用Windows + R启动命令行,拥有最高权限,输入命令:

netstart -ano | findstr 80 #找到占用的pid号。

4、然后将其kill掉,命令如下:

taskkill /F /pid

5、之后在使用最开始的方法启动即可。

【五、Linux环境下(Centos下)搭建】

1、Linux环境下使用最高权限执行(不考虑用户权限)。

2、首先先安装被依赖的插件,命令如下:

yum install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel -y

3、之后依次如此下列的命令,记得看注释噢~

tar -zxvf Nginx-1.16.1.tar.gz
cd Nginx-1.16.1
# 这下面几步骤是进行加载vim插件的,使其在修改conf的时候可以进行常亮
cd contrib
mv contrib ~/.vim
cd ..
# path自己需要安装的地方
./configure -prefix=/path/Nginx
# configure完成后即可,make && make install去
# configure 是进行配置化操作
# make 是进行编译操作
# make install 是进行编译后文件的部署行为
# 为了方便就将make && make install 一起进行

4、之后运行Nginx,命令如下:

cd /nginxInStallPath
./Nginx
#没有任何信息则是运行成功了。Linux的没有任何消息就是最好的消息
curl http://localhost

5、至此Nginx搭建完成。下列命令是一些常规的操作命令:

./Nginx -s reload #重新加载(Nginx能做到热部署的一个原因)
./Nginx -s stop #关闭服务器
./Nginx -t # 可以测试刚修改的Nginx.conf能否生效

【六、Nginx.conf配置】

1、下面是进行Nginx.conf配置,命令如下:

# 下面是进行Nginx.conf配置
cd conf
vim Nginx.conf

2、修改文件中的内容如下所示:

worker_processes number;
# error_log path #错误日志文件位置
# error_log path notice 提醒错误文件位置
# error_log path info 一些Logger::info的输出位置
events {
    work_connections 1024; #定义最大连接数量
}


# http 定义http的位置(高难度配置下章在讲解)
http {
    include mine.types; #定义包含类型,网页请求request_type的地方属性值设置地方在mine.types文件里卖你
    default_type:application/ocet-stream #设置属性流
    sendfile    on; #从一个 buffer到另一个 buffer的拷贝用于优化速度
    #tcp_nopush on;
    keepalive_timeout 60; #设置请求超时时间


    server {
        listen 80 # 设置监听的端口
        server_name localhost # 设置监听的域名
        charset koi8-r #设置字符集


        #access_log logs/host.access.log main #设置主访问日志存储


        location / { #设置正则表达式匹配localhost/底下的目录按照此位置进行处理,
                     #下篇文章配置php会用到
            root html; #设置网站根目录为html路径
            index index.html index.htm; #设置没有确定的资源文件下,会自动访问index.hmtl例如
                                        # 例如访问http://localhost会实际访问http://localhost/index.html
                                        # 或者 http://localhost/index.htm
           }
       error_page 404       /404.html #自定义错误页面代码下访问的页面


       error_page 500 502 503 504 /50x.html
       location = /50.html { #访问路径为50x.html 无论是500, 502, 503, 504, 505这些页面
            root html;
         }
        # location ~\.php$ {
        #   proxy_pass http://127.0.0.1;
        # }
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}


       #location ~/\.ht {
       #    deny all;拒绝所有用户访问
      # }
    }
# 底下是配置https,https是现在还在比较流行的一种安全web服务器的基本要求
    https {
    }
}

【七、总结】

1、Nginx是现代互联网企业中不可缺少的一门技术,在微服务中也极为重要,尤其反向代理所带来的抗风险能力极为重要,热部署能力。

2、本文主要讲述了Nginx在windows和Linux系统下的搭建过程,希望对搭建的学习有帮助。

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【入群】

——————- End ——————-

往期精彩文章推荐:

Ubuntu远程连接显示错误Network error Connection refused解决方法

之前在通过Filezilla往虚拟机或者服务器上传送文件的时候都是十分顺利的,不过最近老是遇到“错误:Network error: Connection refused”,如下图所示。

Ubuntu远程连接显示错误Networkerror解决方法

此外还有“错误: 认证失败。”的错误,如下图所示,从而导致“错误:严重错误:无法连接到服务器”现象的发生。

Ubuntu远程连接显示错误Networkerror解决方法

其实这两个错误并不是同一个原因,所以需要对症下药,否则用药是不会起到效果的。

针对“错误: Network error: Connection refused”的问题,一般是因为Ubuntu刚刚安装好系统,系统中缺乏openssh-server这个包,只需要在Ubuntu中输入安装命令:sudoapt-get install openssh-server,便可以安装了,如下图所示。

Ubuntu远程连接显示错误Networkerror解决方法

待远程连接安装包安装好之后,再次尝试远程连接,确保用户名和密码是正确的,之后便可以连接上了,如下图所示。

Ubuntu远程连接显示错误Networkerror解决方法

针对“错误: 认证失败。”的错误通常是你的用户名或者密码不正确,远程连接是没有问题的,此时如果确认登录密码没有错误的话,很可能是你自己的用户名出错了。

一般的,我们在安装Ubuntu系统的时候,通常会设置用户名为root,但是也有的时候我们会自定义的去设置用户名,如小编的虚拟机名字就是dcpeng,如果选择root用户登录的话,肯定就会出现“错误:认证失败。”的问题,如下图所示。

Ubuntu远程连接显示错误Networkerror解决方法

解决方法也很简单,将用户名改为自己设定的用户名即可,本例中是dcpeng,设置好之后,再次尝试连接,便可以顺利的连接上了,如下图所示。

Ubuntu远程连接显示错误Networkerror解决方法

本文主要是给Linux系统初学者容易遇到的远程登录问题做个简单的总结,希望后来者遇到相对应的问题可以顺利解决,对症下药,而不是选择重新卸载虚拟机,再重新安装系统,这样就事倍功半啦~~

日后小伙伴们可能会通过Filezilla、Putty、Xftp、SecureCRT等远程连接工具遇到类似的问题时,都可以借鉴该方法,举一反三。

最后欢迎大家来积极赐稿噢,只要是编程,计算机相关的稿件都可以投稿给我啦~~

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【入群】

——————- End ——————-

往期精彩文章推荐: