order
схем flex и grid. В приведенных ниже примерах я сосредоточусь на flexbox, но те же понятия применимы к Grid.
С помощью flexbox можно смоделировать предыдущий селектор сиблинга.
В частности, свойство flex order
может перемещать элементы вокруг экрана.
Пример:
Вы хотите, чтобы элемент A загорелся, когда элемент B зависает.
blockquote>
- A
- B
ШАГИ
- Сделайте контейнер
ul
гибким.ul { display: flex; }
- Отменить порядок братьев и сестер в надписи.
- B
- A
- Используйте селектор для подключения к элементу A (
~
или+
).li:hover + li { background-color: red; }
- Используйте свойство flex
order
, чтобы восстановить порядок братьев и сестер на визуальном дисплее.li:last-child { order: -1; }
... и voilà! Предыдущий родитель (или, по крайней мере, имитируемый) родился [или g28]
Вот полный код:
ul { display: flex; } li:hover + li { background-color: red; } li:last-child { order: -1; } /* non-essential decorative styles */ li { height: 200px; width: 200px; background-color: aqua; margin: 5px; list-style-type: none; cursor: pointer; }
- B
- A
Из спецификации flexbox:
5.4. Порядок отображения: свойство
order
Элементы Flex по умолчанию отображаются и выкладываются в том же порядке, что и в исходном документе. Свойство
order
можно использовать для изменения этого заказа.Свойство
blockquote>order
управляет порядком, в котором элементы гибкости появляются в контейнере flex, назначая их порядковым группам. Он принимает одно значение, которое указывает, к какой порядковой группе принадлежит элемент flex.
Начальное значение
order
для всех элементов flex равно 0.Также см.
order
в спецификации CSS Grid Layout spec .Примеры «предыдущих селекторов севера», созданных с использованием свойства flex
order
.
.container { display: flex; } .box5 { order: 1; } .box5:hover + .box4 { background-color: orangered; font-size: 1.5em; } .box6 { order: -4; } .box7 { order: -3; } .box8 { order: -2; } .box9 { order: -1; } .box9:hover ~ :not(.box12):nth-child(-1n+5) { background-color: orangered; font-size: 1.5em; } .box12 { order: 2; } .box12:hover ~ :nth-last-child(-1n+2) { background-color: orangered; font-size: 1.5em; } .box21 { order: 1; } .box21:hover ~ .box { background-color: orangered; font-size: 1.5em; } /* non-essential decorative styles */ .container { padding: 5px; background-color: #888; } .box { height: 50px; width: 75px; margin: 5px; background-color: lightgreen; display: flex; justify-content: center; align-items: center; text-align: center; cursor: pointer; }
Using the flex
order
property to construct a previous sibling selector123HOVER ME4
HOVER MEHOVER ME6781011
HOVER ME1314151617181920jsFiddle
A Side Note & ndash; Две устаревшие убеждения о CSS
Flexbox разрушает давние убеждения в отношении CSS.
Одно из таких убеждений заключается в том, что предыдущий селектор сиблинга невозможен в CSS .
Сказать, что это убеждение широко распространено, было бы преуменьшением. Ниже приведена выборка связанных вопросов только для переполнения стека:
- Выберите предыдущий родственный элемент в CSS с помощью селекторов
- CSS : выберите предыдущий sibling
- CSS выберите предыдущий sibling
- Предыдущий смежный селектор в CSS
- Выберите предыдущие братья и сестры при наведении
- Селектор CSS для перехода к предыдущему брату
- Измените цвет элементов брата на hover using CSS
- Как выбрать предыдущего брата с использованием синтаксиса selenium css
- Селектор CSS для выбора элемента, который приходит до еще один элемент?
- Как добавить стиль в предыдущий родной файл активного входа, используя только CSS
- Селектор CSS для следующих и предыдущих элементов
- Как воздействовать на другие элементы при зависании div
Как описано выше, это убеждение не совсем верно. Предыдущий сингл-селектор может быть смоделирован в CSS с использованием свойства flex
order
.Миф
z-index
Еще одно давнее убеждение что
z-index
работает только с расположенными элементами.Фактически, самая последняя версия spec & ndash; Проект редактора W3C & ndash; все еще утверждает, что это правда:
9.9.1 Определение уровня стека: свойство
z-index
z-index
- Значение: auto | | inherit
- Начальное: auto
- Применяется к: позиционированным элементам
- Inherited: no
- Процент: N / A
- Медиа: визуальный
- Вычисленное значение: как указано
(выделено курсивом)
blockquote>В действительности, однако, эта информация устарела и неточна.
Элементы, которые являются элементами гибких элементов или , могут создавать (f28)
static
.4.3. Элемент Flex Item Z-Ordering
Элементы Flex представляют собой то же самое, что и встроенные блоки, за исключением того, что порядок ортогонального заказа используется вместо необработанного порядка документа и значения
z-index
, отличные отauto
создать контекст стекирования, даже еслиposition
-static
.5.4. Z-axis Ordering: свойство
z-index
Порядок рисования элементов сетки точно такой же, как и встроенные блоки, за исключением того, что порядок ортогонального заказа используется вместо необработанного порядка документа и
blockquote>z-index
, отличные отauto
, создают контекст стекирования, даже еслиposition
-static
.Ниже приведена демонстрация работы
z-index
над непозиционированными элементами гибкости: https://jsfiddle.net/m0wddwxs/
Следующий VBScript загружает файл с использованием FrontPage RPC:
Function StringToByteArray(str)
Set stream = CreateObject("ADODB.Stream")
stream.Open
stream.Type = 2 ''adTypeText
stream.Charset = "ascii"
stream.WriteText str
stream.Position = 0
stream.Type = 1 ''adTypeBinary
StringToByteArray = stream.Read()
stream.Close
End Function
Sub UploadFile(sourcePath, siteUrl, docName, title, checkincomment, userName, password)
strHeader = "method=put+document%3a12.0.4518.1016" + _
"&service_name=%2f" + _
"&document=[document_name=" + Escape(docName) + _
";meta_info=[vti_title%3bSW%7c" + Escape(title) + "]]" + _
"&put_option=overwrite,createdir,migrationsemantics" + _
"&comment=" + _
"&keep%5fchecked%5fout=false" + vbLf
bytearray = StringToByteArray(strHeader)
Set stream = CreateObject("ADODB.Stream")
stream.Open
stream.Type = 1 ''adTypeBinary
stream.Write byteArray
Set stream2 = CreateObject("ADODB.Stream")
stream2.Open
stream2.Type = 1 ''adTypeBinary
stream2.LoadFromFile sourcePath
stream2.CopyTo stream, -1
stream.Position = 0
Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
xmlHttp.open "POST", siteUrl + "/_vti_bin/_vti_aut/author.dll", false, userName, password
xmlhttp.setRequestHeader "Content-Type","application/x-vermeer-urlencoded"
xmlhttp.setRequestHeader "X-Vermeer-Content-Type","application/x-vermeer-urlencoded"
xmlhttp.setRequestHeader "User-Agent", "FrontPage"
xmlHttp.send stream
If xmlHttp.status = 200 Then
If Instr(xmlHttp.responseText, "successfully") = 0 Then
MsgBox "ERROR: " & vbCrLf & xmlHttp.responseText
Else
''Checkin
strHeader = "method=checkin+document%3a12.0.4518.1016" + _
"&service_name=%2f" + _
"&document_name=" & Escape(docName) + _
"&comment=" + Escape(checkincomment) + _
"&keep%5fchecked%5fout=false" + vbLf
Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
xmlHttp.open "POST", siteUrl + "/_vti_bin/_vti_aut/author.dll", false, userName, password
xmlhttp.setRequestHeader "Content-Type","application/x-vermeer-urlencoded"
xmlhttp.setRequestHeader "X-Vermeer-Content-Type","application/x-vermeer-urlencoded"
xmlhttp.setRequestHeader "User-Agent", "FrontPage"
xmlHttp.send strHeader
End If
End If
If xmlHttp.status / 100 <> 2 Then
MsgBox "ERROR: status = " & xmlHttp.status & vbCrLf & xmlHttp.responseText
End If
End Sub
UploadFile "C:\Users\myusername\Desktop\Test File.zip", _
"http://computername/Sites/sitename", _
"Requirements/Test File.zip", _
"Test title", _
"Test checkin comment", _
"MYDOMAIN\myusername", "mypassword"
MsgBox "Done"
Обратите внимание, что имя файла должно состоять только из символов ASCII. В противном случае приведенный выше сценарий не будет работать.
Как насчет отображения буквы диска в библиотеке документов SharePoint. Затем просто скопируйте / переместите файлы, как обычно?
Вот как я выполнил эту задачу, теперь мне нужно найти способ проверить документ через vbscript.
function SPCopy(InFileName, InPath, oFS)
SPURL = ""
SPSource = InPath & "\" & InFileName
' determine which sharepoint path to copy the excel workbook to
If InStr(InFileName, "Email") > 0 Then
SPURL = "\\sharepoint\sites\IS\Shared Documents\Email Reports"
ElseIf InStr(InFileName, "FTP") > 0 Then
SPURL = "\\sharepoint\sites\IS\Shared Documents\FTP Reports"
ElseIf InStr(InFileName, "SSL") > 0 Then
SPURL = "\\sharepoint\sites\IS\Shared Documents\SSL Reports"
End If
If SPURL = "" Then
MsgBox "File: " & SPSource & " is not a valid file from STRM..." & vbCrLf & _
"Not sure where to upload it to SharePoint... " & vbCrLf & vbCrLf & _
SPSource & " will be deleted...", 48, "myScript"
Exit Function
End If
' build the final part of the path based on the year and month
MyDate = Left(InFileName, 4) & "_" & MonthName(Mid(InFileName, 5, 2))
MyTitle = Mid(InFileName, 10, InStr(InFileName, ".") - 10)
SPURL = SPURL & "\" & MyDate
DestFile = SPURL & "\" & InFileName
' copy the file(s) to the sharepoint path if its not already there
If Not oFS.FileExists(DestFile) Then
oFS.CopyFile SPSource, SPURL, True
End If
end function
Лучшим решением будет использование FP RPC (это вызов на передней панели). Это в основном веб-запрос, в котором вы передаете вам метаданные и содержимое файла в качестве параметров. Это можно сделать с любого языка, включая VBA / VBS. Это формальное описание метода: http://msdn.microsoft.com/en-us/library/ms479623.aspx Вы можете найти довольно много ресурсов и пример кода о том, как создать утилиту
meta_info=[...]
. Например.";meta_info=[vti_title%3bSW%7c" + Escape(title) + ";project%3bSW%7c" + Escape(project) + "]]"
. У вас должно быть специальное поле под названиемproject
в библиотеке документов. & Quot; SW & Quot; означает, что это должно быть строковое значение (используйте «BW» для логического (true / false) или «IW» для целого числа. – user 28 September 2010 в 06:24