0

背景:私は自分のWebアプリケーションの主要な新機能バージョンを作成していますが、ユーザーインターフェイスも更新して「祝う」のがいいと思いました。専門的な再設計の予算がないので、代わりにstyle.cssシートに微妙な変更を加えることができると思いました。

理想的には、私のstyle.cssシート(色はWindows XPを中心に設計されています)をインポートし、新しいstyle.cssシートをWindows7のスタイルでエクスポートするプログラムがあります。cssシートをインポートできるプログラムを見たことがありますが自分で各色を試してからエクスポートします[時間も目もありません]。色の間に何らかの相関関係を保ちながら、CSSシート全体を自動的に変更するものは見たことがありません。

次のVBAコードを作成しました[大幅に改善できることはわかっていますが、実験のために一緒に投げました]これにより、style.cssシートのすべての色が変更されます(アクティブなExcelシートの列Aに貼り付けられている場合) 。CSSの色が16進数で表されていると仮定すると、たとえば#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 に答える