0

背景:我正在为我的 web 应用程序做一个重要的新功能版本,我认为通过更新用户界面来“庆祝”会很好。由于我没有专业重新设计的预算,我想我可以对 style.css 表进行一些细微的更改。

理想情况下,会有一个程序可以导入我的 style.css 表(颜色是围绕 Windows XP 设计的)并以 Windows 7 的样式导出新的 style.css 表。虽然我见过允许您导入 css 表的程序并自己玩每种颜色然后导出[我既没有时间也没有时间做的事情],我还没有看到任何东西会自动改变你的整个css表,同时保持你的颜色之间的某种相关性。

我编写了以下 VBA 代码 [我知道它可以改进很多,但我只是将它放在一起进行实验] 这将改变 style.css 工作表的所有颜色(如果它被粘贴到活动 Excel 工作表的 A 列中) . 假设 CSS 颜色以十六进制表示,例如 #123456(其中 12 是红色分量,34 是绿色分量,56 代表蓝色分量)当前的代码使颜色的红色分量更大,和蓝色成分较少。[查看函数makeWarmer]

Sub changeCSSColors()
    For j = 1 To 1390 'number of rows
        a = Cells(j, 1)
        b = InStr(a, "#")
        If b > 0 Then
            aHex = UCase(Mid(a, b + 1, 6))
            If isHexS(aHex) Then
                a = Left(a, b) + makeWarmer(aHex) + Mid(a, b + 7)
                Cells(j, 1) = a
            End If
        End If
    Next j

End Sub

Function isHex(aChar)
    If InStr("ABCDEFabcdef01234567890", aChar) > 0 Then isHex = True Else isHex = False
End Function

Function isHexS(aString)
    For j = 1 To Len(aString)
        b = Mid(aString, j, 1)
        If Not isHex(b) Then isHexS = False: Exit Function
    Next j
    isHexS = True
End Function

Function makeWarmer(aString)
    b = addOneToChar(Mid(aString, 1, 1))
    c = subOneToChar(Mid(aString, 5, 1))
    makeWarmer = addOneToChar(Mid(aString, 1, 1)) + Mid(aString, 2, 1) + addOneToChar(Mid(aString, 3, 1)) + Mid(aString, 4, 1) + addOneToChar(Mid(aString, 5, 1)) + Mid(aString, 6, 1)
End Function

Function swapBlueGreen(aString)
  swapBlueGreen = Mid(aString, 3, 2) + Mid(aString, 1, 2) + Mid(aString, 5, 2)
End Function

Function addOneToChar(aChar)
    If (aChar >= "0" And aChar <= "8") Or (aChar >= "A" And aChar <= "E") Then
        aChar = Chr(Asc(aChar) + 1)
    ElseIf aChar = "9" Then
        aChar = "A"
    ElseIf aChar = "F" Then
        aChar = "F"
    End If
    addOneToChar = aChar
End Function

Function subOneToChar(aChar)
    If (aChar >= "1" And aChar <= "9") Or (aChar >= "B" And aChar <= "F") Then
        aChar = Chr(Asc(aChar) - 1)
    ElseIf aChar = "A" Then
        aChar = "9"
    ElseIf aChar = "0" Then
        aChar = "0"
    End If
    subOneToChar = aChar
End Function

我还尝试使用函数 SwapBlueGreen 更改蓝色和绿色组件。但是,这两种功能我都没有得到令人满意的视觉效果。[Web 应用程序看起来很奇怪]

有没有人有其他关于函数的想法,而不是我可以使用的 makeWarmer 或 SwapBlueGreen,也许是某种掩蔽。或者,也许有一些软件可以满足我的需求。

4

1 回答 1

0

您可以将旧文档转换为 SASS 并使用强大的 SASS 颜色函数进行操作。

这可能比自己编写程序更容易:)

于 2012-10-24T13:46:42.997 回答