【问题标题】:Edit css file in swift/obj c without using javascript在 swift/obj c 中编辑 css 文件而不使用 javascript
【发布时间】:2015-07-21 22:06:38
【问题描述】:

我想更改 html 页面的字体/字体颜色/字体大小。我已使用 String(contentsOfFile) 将 css 文件转换为字符串。我可以使用 regEx 或类似的东西来编辑 css 数据吗?这是css文件的示例

.calibre {

    color: #000;
    display: block;
    font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
    font-size: 1em;
    margin-bottom: 0;
    margin-left: 5pt;
    margin-right: 5pt;
    margin-top: 0;
    padding-left: 0;
    padding-right: 0;
    text-align: justify
}

我还尝试使用 ESCssParser 将此字符串(Css 文件)转换为字典。但是,当我将该字典(更改字体大小后)转换为字符串时,格式会有所不同。差异的一个示例是#idSelector 将变为“#idSelector”。我假设这些更改会影响 css 文件。我错了吗?

还有其他方法可以编辑 Css 文件吗? 谢谢!

【问题讨论】:

  • 您可以将文件加载到字符串中,解析字符串,更改您想要更改的内容,然后再次保存 css 文件。您的页面需要重新加载才能让用户看到更改,您为什么要这样做?
  • 我会在加载页面之前更改 css。例如,用户选择一个尺寸(小、中或大)然后当他关闭该视图控制器时,将出现具有新尺寸的页面
  • “改变你想改变的”。我的问题是如何改变它?就像 css 是一个大字符串,对吧?我可能需要在多个地方更改它
  • 你能改变你的html吗?将您更改的类放在包装器 div 上并使用它来控制您的 css 会更容易。

标签: html ios css objective-c swift


【解决方案1】:

如果您更改 html 中的类而不是尝试更改 css 中的大量条目会更好。 例如,如果您像这样布置 html:

<body>
    <div id="wrapper" class="med">
        <p class="calibre">Lorem Ipsum</p>
        <!--rest of html-->
    </div>
</body>

您可以在后端代码中更改 #wrapperelement 中的类,然后使用 css 来确定页面的样式,如下所示:

.calibre {
    color: #000;
    display: block;
    font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
    font-size: 1em;
    margin-bottom: 0;
    margin-left: 5pt;
    margin-right: 5pt;
    margin-top: 0;
    padding-left: 0;
    padding-right: 0;
    text-align: justify
}
#wrapper.small .calibre{
    font-size: 0.8em;
}
#wrapper.large .calibre{
    font-size: 1.4em;
}

在上面的示例中,没有特定的 med 类,因此将使用默认值 (1em)。如果您要使包装器具有 small 或 large 类而不是 med,则 calibre 仍然具有所有相同的属性,除了 font-size 在 small 的情况下将更改为 0.8em 在 large 的情况下更改为 1.4em .

Here's 一个用 jquery 代替后端代码的示例。

【讨论】:

  • 然后我需要新类(用于 med)来拥有除我想要更改的属性之外的所有以前的属性。我该怎么做呢?谢谢!
  • 如果 med 不是您的默认值,那么您可以添加另一位 css,例如 #wrapper.med{ font-size: 1.1em;} 或其他。 calibre 类将始终从 css 中的长条目中获取所有内容,当包装器具有“小”或“大”类时,font-size 只是在示例中被覆盖。
  • 如果我理解正确,如果文本是#wrapper.small 类型并且具有类口径,那么它将获得口径类的所有属性,而#wrapper.small 将覆盖这些属性在口径类。
  • 任何具有类 calibre 的 html 元素都将获得第一个花括号中的所有属性。然后任何具有 class calibre 的 html 元素也位于具有 id 包装器和 class small 的 html 元素内,将获得第二个花括号内的内容 (font-size: 0.8em;) 这将覆盖 calibre 类的默认值,因为它更多具体的。
  • 好的,谢谢。生病将答案标记为正确,因为它解决了问题。但是,我有很多课程,例如 calibre。根据这个方法(创建像#wrapper这样的新类),我需要为我拥有的每个口径类创建多个类,每个类都有我想要更改的不同字体大小(calibre1(font-size 1em),calibre2(font-size 1.3em)等)。有没有其他方法可以让我不必创建很多类?谢谢
猜你喜欢
  • 2015-09-16
  • 1970-01-01
  • 2014-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多