目标:
我正在尝试获取一个 INLINE SVG 元素来填充父元素的全部可用宽度。我可以使用 img 和 object 标记引用 svg 文件轻松实现相同的效果,但我想使用 inline svg 因为我使用 javascript 为 svg 内部元素设置动画。
问题:
我可以在 Firefox 中实现这一点,并在 Chrome 中进行一些调整,但 safari 和 IE9 & IE10 无法正常工作。
主要问题:
是否有响应式 INLINE SVG 的跨浏览器解决方案:查看 IE9 & 10 和 -webkit-Safari 中的示例,注意 SVG 元素(青色)中不需要的额外高度。
http://jsfiddle.net/David_Knowles/9tUAd/
<div class="block">stuff</div>
<div class="wrap">
<svg version="1.1" baseProfile="basic" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 550 350" xml:space="preserve" preserveAspectRatio="xMinYMin meet">
<rect x="0" y="0" width="550" height="350"/>
<polyline points="0,0 0,350 550,350"/>
<text x="0" y="50%" fill="#ffffff" stroke="none" width="100%">The text</text>
</svg>
</div>
<div class="block">stuff</div>
最佳答案
第一个问题是您将 .svg-wrap div 设置为 100% 高度。什么的 100%?在本例中,该 div 的父元素是 body 元素。当您拥有占主体高度 100% 的 block 级内容和其他流入元素时,您将始终拥有垂直滚动条。因为您将始终拥有 100% + 您的 .stuff 元素的内容。正如一般提示一样,像这样的持续溢出应该表明您的 CSS 中存在某些问题。
继续深入 DOM,svg 元素上的 100% 高度声明迫使 svg 扩展到过高的包装器。这是罪魁祸首的另一部分。
我使用的解决方案涉及intrinsic ratios .像这样的 CSS:
.svg-wrap {
background-color:red;
height:0;
padding-top:63.63%; /* 350px/550px */
position: relative;
}
svg {
background-color: cyan;
height: 100%;
display:block;
width: 100%;
position: absolute;
top:0;
left:0;
}
在最新版、FF、Chrome、Safari 中测试过(尽管不是 IE)。
这种方法的缺点是:
a) 您必须预先计算所有框的比率,或者编写一个脚本来执行此操作。还不错。
b) 你不能在星形选择器中全局使用 border-box ,或者如果你需要将 box-sizing 覆盖回 content-box你的 svg 容器。可行。
作为旁注,这显然不是事情应该如何运作的。浏览器应该足够聪明,可以查看 SVG viewBox 属性以获取比例,计算计算宽度(在任何 maxWidth 限制之后),然后计算高度。
但它目前不以这种方式工作。 Chrome 中还有另一个奇怪的错误,将 max-width:100% 添加到 svg 会导致 svg 始终调整为最小渲染大小。尝试在 Chrome 中加载这个 fiddle :
您根本看不到 SVG!诡异的。更奇怪的是,关闭 Dev Tools 中的 max-width 声明,然后开始使用 jsfiddle 中“结果”视口(viewport)的宽度。稍微窄一点,然后宽一点,再窄一点,再宽一点。请注意,一旦 svg 变小,它不会在视口(viewport)变大时再次调整大小!
这一点很重要,因为:
* {max-width:100%}
是一种常见的(并且完全合法的)响应式设计方法,目前它对 Blink 中的 SVG 造成了严重破坏。所以现在坚持内在比率。
关于html - 响应式 INLINE SVG - svg 的内容必须填充父宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16813829/
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]
在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这
所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie
我有一个驼峰式字符串,例如:JustAString。我想按照以下规则形成长度为4的字符串:抓取所有大写字母;如果超过4个大写字母,只保留前4个;如果少于4个大写字母,则将最后大写字母后的字母大写并添加字母,直到长度变为4。以下是可能发生的3种情况:ThisIsMyString将产生TIMS(大写字母);ThisIsOneVeryLongString将产生TIOV(前4个大写字母);MyString将生成MSTR(大写字母+tr大写)。我设法用这个片段解决了前两种情况:str.scan(/[A-Z]/).first(4).join但是,我不太确定如何最好地修改上面的代码片段以处理最后一种
我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.
我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s